Здравствуйте! Прошу помощи профессионалов и просто любителей.
SELECT hntgrp FROM voip_hunt_groups WHERE number=CAST('1209' AS varchar) AND hntgrp=CAST('5' AS varchar) LIMIT 1;
результат поле hntgrp character varying(5) 5
Есть внешний номер с хантгруппой 5
Идет сопоставление, т.е. если передается не нулевое или не цифровое или не пустое значения, то перевод звонка разрешен
Так вот, пытаюсь реализовать такой вариант, когда внешний номер имеет несколько хантгрупп, записанных через запятую, т.е. так: 1,5,22
И тут возникает вопрос, как же можно сравнить 5 и (1,5,22,) на соответствие, отбросив все лишнее, в данном случае 1, 22 и запятые. Пробовал кучу вариантов и ничего в результате.
Остановился на этом варианте, но предполагаю, что я даже не в том направлении т.к. думаю тут поможет IF ELSE sql, но я в этом никак не могу разобраться ибо low skill
SELECT * FROM unnest(array[(SELECT CAST(hntgrp AS int) FROM extnums WHERE extnum~'4951112233')]) ok WHERE ok = any(array[(SELECT CAST(hntgrp AS int) FROM hunt_groups WHERE num='1209' AND hntgrp='5')]);
Возвращает поле integer со значением 5
А что мешает поискать
А что мешает поискать подстроку в строке или даже сделать LIKE типа "%,5,%"?
строки
Дело в том, что я пытаюсь найти соответствие сравнивая несколько строк character varying с данными записанными в одну строку.
т.е. первый запрос (1209) получает:
row| huntgrp |
1 | 5 |
2 | 1 |
3 | 44 |
4 | 9 |
а второй запрос (внешний номер):
row | huntgrp |
1 | 5,44 |
в обоих случаях huntgrp имеет тип character varying
с первым случаем
с первым случаем понятно:
получим:
в
а вот как заставить интерпретатор преобразовать текстовый результат в числовой через запятую, что бы можно было бы сравнить эти результаты на соответствие?
Не правильная мысль, из
Не правильная мысль, из запроса выше достаточно убрать CAST
получим текст через запятую, а текст с текстом сравнивать уже удобнее!
п.с. мысли в слух
Помогите пожалуйстаSELECT
Помогите пожалуйста
в итоге получаю столбец с типом text[] и две строки, в которых нужно найти соответствие, причем 1 и 11, 3 и 35, 5 и 51 и т.п., в соответствие не входит
Если будут у кого светлые мысли, прошу делитесь ими и своим опытом
а что не так?
а что не так?