|
Разбить каждое слово в строке на отдельные элементы для функции IN
|
|||
---|---|---|---|
#18+
Всем привет Столкнулся с проблемой связки PostgresQL с EXEL Проблема: для пользователя и интеграции с EXCEL нужно выражение: FROM ( SELECT order_no , courier , asn FROM rms_p009qtzb_rms_ods.v_shipment WHERE courier in ('DRYU4172926','CMAU1748584') Заменить на FROM ( SELECT order_no , courier , asn FROM rms_p009qtzb_rms_ods.v_shipment WHERE is_actual = '1' and to_loc_type = 'W' and to_loc = '922' and courier in (?) Проблема в том, что это работает, когда в ячейке EXCEL только 1 параметр. Например если параметр ? будет равен 'DRYU4172926', то тогда SQL спокойно отработает этот запрос. Однако, если в ячейку писать несколько параметров, например как в исходном коде ? = 'DRYU4172926','CMAU1748584' , то SQL не найдет ни одного выражения. Проблема заключается в том, что параметр ? отрабатывает как одна строка, т.е ('DRYU4172926','CMAU1748584') ищется как 1, грубо говоря, предложение Как я понимаю нужна какая-либо простая функция PostgresQL, которая будет из строки (DRYU4172926 CMAU1748584) делать два элемента, опираясь на пробел и заменяя его на , или можно решить по принципу "сделать таблицу" чтобы строка (DRYU4172926 CMAU1748584) превращалась в таблицу с теми же значениями DRYU4172926 и CMAU1748584 опираясь так же на разделитель пробела т.к функция in часто используется со вложенным Select, что возвращает как раз таблицу Есть ли какие-либо функции, которые могут решить эту проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2021, 14:21 |
|
Разбить каждое слово в строке на отдельные элементы для функции IN
|
|||
---|---|---|---|
#18+
Serjiomeloman, функция regexp_split_to_array тебе поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2021, 19:37 |
|
Разбить каждое слово в строке на отдельные элементы для функции IN
|
|||
---|---|---|---|
#18+
Serjiomeloman Есть ли какие-либо функции, которые могут решить эту проблему? Есть, например так можно... Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2021, 23:31 |
|
Разбить каждое слово в строке на отдельные элементы для функции IN
|
|||
---|---|---|---|
#18+
fte, Опечатка функция, конечно же string_to_array ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 08:07 |
|
Разбить каждое слово в строке на отдельные элементы для функции IN
|
|||
---|---|---|---|
#18+
Всем спасибо) Решил проблему так: SELECT order_no , courier , asn FROM rms_p009qtzb_rms_ods.v_shipment WHERE is_actual = '1' and to_loc_type = 'W' and to_loc = '922' and courier in (SELECT foo FROM regexp_split_to_table(?, '\s+') AS foo) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 09:42 |
|
|
start [/forum/topic.php?fid=53&fpage=8&tid=1993889]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 251ms |
total: | 370ms |
0 / 0 |