SELECT *
FROM XYZ
WHERE column1 IN (X1,Y1,Z1);
我想在这个select查询中使用LIKE;如何用IN写LIKE语句,类似查询如下:
SELECT *
FROM XYZ
WHERE column1 LIKE IN ($P{COLUMN});
另一个例子:-
select * from(select REPLACE(REFEV_VEH_TYPE,' ','')||REPLACE(REFEV_CATEGORY,' ','')||REPLACE(REFEV_USAGE,' ','')||将(REFEV_BODY_CODE,' ','')替换为TREF_ENF_VEHICLE_TYPE的UC)aa,其中aa.UC LIKE('%06TBISUM%')
UC
------
06TBISUM
select * from(select REPLACE(REFEV_VEH_TYPE,' ','')||REPLACE(REFEV_CATEGORY,' ','')||REPLACE(REFEV_USAGE,' ','')||将(REFEV_BODY_CODE,' ','')替换为TREF_ENF_VEHICLE_TYPE的UC)aa,其中aa.UC LIKE('% B')
UC
----------
06TGISJB
06TGITJB
select * from(select REPLACE(REFEV_VEH_TYPE,' ','')||REPLACE(REFEV_CATEGORY,' ','')||REPLACE(REFEV_USAGE,' ','')||将(REFEV_BODY_CODE,' ','')替换为TREF_ENF_VEHICLE_TYPE的UC)aa,其中aa.UC LIKE('% BAS')
UC
----------
06BCIBAS
05BCABAS
05BCBBAS
我想知道的结果是:
select * from(select REPLACE(REFEV_VEH_TYPE,' ','')||REPLACE(REFEV_CATEGORY,' ','')||REPLACE(REFEV_USAGE,' ','')||将(REFEV_BODY_CODE,' ','')替换为TREF_ENF_VEHICLE_TYPE的UC)aa,其中aa.UC IN LIKE('%06TBISUM%','% B','%BAS').
UC
------
06TBISUM
06TGISJB
06TGITJB
06BCIBAS
05BCABAS
05BCBBAS
我使用的参数是**$P{COLUMN}。我想使用IN LIKE($P {COLUMN})按$P {COLUMN}**参数搜索多个。有人知道吗?
4条答案
按热度按时间roejwanj1#
LIKE运算在功能上等同于多个OR运算。所以...
3df52oht2#
试试看
其中REGEXP_LIKE(aa.UC,+[06TBISUM.*|B|BAS].+')
将+替换为 *(如果我把 * 放在里面,它会翻译成斜体字)
chhkpiq43#
另一种简化的方法是像这样使用
IN ('a','b','c')
:你可以在()里面放一些你想要的参数。
7vux5j2d4#
在DB2中不能将单个变量用作数组,但是可以使用递归CTE拆分它。
下面是一个不需要定义函数的版本:
(not测试,因为我手边没有DB2示例)
假设
$P{COLUMN}
包含以下字符串:'%06TBISUM%,%B,%BAS'
。