iT邦幫忙

0

Oracle split字串, in LIKE Condition有辦法嗎?

  • 分享至 

  • xImage

請問各位大大
我有一段用逗號分隔的字串: '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;
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
喵凹咿唉思嗯
iT邦研究生 5 級 ‧ 2022-04-21 17:48:55
最佳解答

不是很懂你的問題 你要的是像這樣?

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,',','|')||').*')
leo226 iT邦新手 4 級 ‧ 2022-04-21 21:34:07 檢舉

簡單說就是我接到一組字串: 'A,B,C,D,E'
要怎麼將字串分割後串成以下SQL 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

明天再來試試你的SQL方法,謝謝

那試看看我的做法吧, 就是把字串換成正規表示式的語法 再套regexp_like這樣

leo226 iT邦新手 4 級 ‧ 2022-04-22 14:25:48 檢舉

可以,謝謝指教~

我要發表回答

立即登入回答