選擇 *
從表
WHERE column_one LIKE IN ('%one%', '%two%');
這將是錯誤的: SQL 錯誤 [936] [42000]: ORA-00936: 缺少運算式
如何實作這種模糊查詢?
uj5u.com熱心網友回復:
當然,正如所評論的那樣,使用 ofOR是正確的方法,盡管有點冗長。
與您的方法最接近的選擇是使用regexp_like允許更多選擇的模式。
例子
with tab as (
select '...one..' column_one from dual union all
select '.two.,..' column_one from dual union all
select '.three..' column_one from dual)
select *
from tab
where regexp_like(column_one,'(one|two)');
COLUMN_O
--------
...one..
.two.,..
uj5u.com熱心網友回復:
exists您可以生成查找表并使用謂詞檢查每個輸入行。
create table t as select level as id , decode(mod(level, 7), 1,'A', 'B') || dbms_random.string('i', 10) as val from dual connect by level < 16
with lkp(val) as ( select * from table(sys.odcivarchar2list( 'A%', '%F%' )) ) select * from t where exists ( select 1 from lkp where t.val like lkp.val )身份證 | 價值 -: | :---------- 1 | AJHCIHZIVQY 2 | BQCYACBBLFS 3 | BVATBIEQFEF 4 | BHEFYAUUENF 7 | BFPZVWRWTFP 8 | AGSKVEXPFSV 11 | BFSJXDRGAWV 14 | BFVXCSQWUQT 15 | AFJPPPHDTKM
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422026.html
標籤:
下一篇:查找文本值并將其移動到不同的列
