請問各位大大
我有一段用逗號分隔的字串: 'A,B,C,D,E'
想要將字串split後將它放進LIKE條件式查詢, 目前想不到方法, 不知是否有先進們處理過這問題的解法
SELECT name
FROM myTable
WHERE 1=1
AND (param LIKE 'A%' OR param LIKE 'B%' OR param LIKE 'C%' OR param LIKE 'D%' OR param LIKE 'E%')
ORDER BY param DESC
情境限制:
1.不能使用程式語言針對'A,B,C,D,E'字串處理後串SQL字串處理
2.不能使用stored procedure類程式處理的方式處理
僅能在SQL接到此字串後用SQL語法處理
先感謝了
有點類似以下將字串轉成條件式...
特殊用法:
select id, name from users where instr('101914, 104703', id) > 0;
它等價於
select id, name from users where id = 101914 or id = 104703;
ref: https://www.itread01.com/article/1495091335.html
但是目標是要將字串轉換成like條件式,以下範例字串只函單一條件可以轉成LIKE,如果字串包含了多個條件不知如何轉換
SELECT code, name, dept, occupation FROM staff WHERE instr(code, '001') > 0;
等同於
SELECT code, name, dept, occupation FROM staff WHERE code LIKE '%001%' ;
--字串有多個條件無法轉換
SELECT code, name, dept, occupation FROM staff WHERE instr(code, '001,002,003') > 0;
不是很懂你的問題 你要的是像這樣?
select cols,'^('||replace(RULE,',','|')||').*' from (
select 'AN' cols from dual
union all
select 'AB' from dual
union all
select 'BZ' from dual
union all
select 'ZZ' from dual) A,
(select 'A,B,C,D,E' as rule from dual)
where regexp_like(cols,'^('||replace(RULE,',','|')||').*')