powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / числа до двоеточия и после в строке...
10 сообщений из 10, страница 1 из 1
числа до двоеточия и после в строке...
    #39409067
Klax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица:
id string
1 2,4:2,9
2 4:6
3 3:5
4 1,4:4,8

Необходимо выбрать все строки, где число X входит в диапазон, записанный через двоеточие.
Помогите, пожалуйста, в SQL почти не шарю...

Спасибо.
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39409170
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спроси того, кто эту кривую таблицу проектировал.
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39409222
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Klax,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with t (id, string) as (
   values (1, '2.4:2.9'),
          (2, '4:6'), 
          (3, '3:5'), 
          (4, '1.4:4.8')
)
   select * from t 
   where 3 between split_part(t.string,':',1)::numeric 
                     and split_part(t.string,':',2)::numeric;
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39411434
Klax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов, спасибо!..
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39411451
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно развить идею, вдруг даст хороший результат на большом количестве:

сделать индекс на диапазонный тип numrange, к которому преобразовать split_part(t.string,':',1) и split_part(t.string,':',2)::numeric+0.01
где 0.01 это минимальное число в вашей системе счисления, и необходимо прибавить что бы правый крайний входил в диапазон тоже

и поиск в запросе делать на вхождение 3 в диапазон=)

либо делать два индекса на split_part(t.string,':',1) и split_part(t.string,':',2) для текущего решения, но как по ним будет, не знаю)
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39411481
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushkaгде 0.01 это минимальное число в вашей системе счисления, и необходимо прибавить что бы правый крайний входил в диапазон тоже
Ммм, а зачем? range типы же умеют штатно включать хвосты диапазона. Конструируется в виде '[2.4,2.9]'::numrange строковым литералом или numrange(2.4, 2.9, '[]') в виде вызова функции.
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39411485
Klax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В текущем проекте делаем товары со свойствами. И там будут такие свойства как цвет, размер, длина, глубина и т.д.
В некоторых свойствах возможны диапазоны. Поэтому и хранить его решили пока в одной строке, разделив "от" и "до" двоеточием.
Ну и в фильтре тоже будет диапазон. Т.е. к примеру выбрать все товары, где длина от 3" до 7"...
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39411494
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KlaxВ текущем проекте делаем товары со свойствами. И там будут такие свойства как цвет, размер, длина, глубина и т.д.
В некоторых свойствах возможны диапазоны. Поэтому и хранить его решили пока в одной строке, разделив "от" и "до" двоеточием.
Ну и в фильтре тоже будет диапазон. Т.е. к примеру выбрать все товары, где длина от 3" до 7"...

а почему range типы не устраивают ?
почему всё внавал, но при этом не hstore с гибким содержимым ?
ну и т.п. (hstore(...,range,...) ?
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39411499
Klax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соответственно будет поиск по наложению отрезков. Это я уже нашел и реализовал...
...
Рейтинг: 0 / 0
числа до двоеточия и после в строке...
    #39411518
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij...или numrange(2.4, 2.9, '[]') в виде вызова функции.
Melkij, спасибо.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / числа до двоеточия и после в строке...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]