SELECT *
FROM XYZ
WHERE column1 IN (X1,Y1,Z1);
我想在此选择查询中使用 LIKE ;如何用 IN 编写 LIKE 语句,类似于以下查询:
SELECT *
FROM XYZ
WHERE column1 LIKE IN ($P{COLUMN});
另一个例子: -
select * from(选择REPLACE(REFEV_VEH_TYPE,'','')|| 更换(REFEV_CATEGORY,'','')||更换(REFEV_USAGE,'','')|| 将TREF_ENF_VEHICLE_TYPE中的UC替换为(REFEV_BODY_CODE,'','') aa aa.UC LIKE('%06TBISUM%')
UC
------
06TBISUM
select * from(选择REPLACE(REFEV_VEH_TYPE,'','')|| 更换(REFEV_CATEGORY,'','')||更换(REFEV_USAGE,'','')|| 将TREF_ENF_VEHICLE_TYPE中的UC替换为(REFEV_BODY_CODE,'','') aa aa.UC LIKE('%B')
UC
----------
06TGISJB
06TGITJB
select * from(选择REPLACE(REFEV_VEH_TYPE,'','')|| 更换(REFEV_CATEGORY,'','')||更换(REFEV_USAGE,'','')|| 将TREF_ENF_VEHICLE_TYPE中的UC替换为(REFEV_BODY_CODE,'','') aa aa.UC LIKE('%BAS')
UC
----------
06BCIBAS
05BCABAS
05BCBBAS
我想知道的结果是:
选择*来自( 选择REPLACE(REFEV_VEH_TYPE,'','')||更换(REFEV_CATEGORY,'','')||更换(REFEV_USAGE,'','')||替换(REFEV_BODY_CODE,'','')为UC 来自TREF_ENF_VEHICLE_TYPE)aa 其中aa.UC IN('%06TBISUM%','%B','%BAS' )。
UC
------
06TBISUM
06TGISJB
06TGITJB
06BCIBAS
05BCABAS
05BCBBAS
我使用的参数是 $ P {COLUMN} 。 我想使用IN LIKE($ P {COLUMN})通过 $ P {COLUMN} 参数搜索多个。有人知道吗?
答案 0 :(得分:0)
LIKE操作在功能上等同于多个OR操作。 所以..
SELECT *
FROM XYZ
WHERE ( column1 like 'X1' OR column1 like 'X2' OR column1 like 'X3' )
答案 1 :(得分:0)
尝试
其中REGEXP_LIKE(aa.UC,'。+ [06TBISUM。* | B | BAS]。+')
将*替换为*(如果我将*转换为斜体)
答案 2 :(得分:-1)
您不能在DB2中将单个变量用作数组,但您可以split it with a recursive CTE。
这是一个无需定义功能的版本:
WITH Split AS (SELECT '' AS value, txt, LOCATE(',', txt) AS nxt
FROM (VALUES($P{COLUMN})) t(txt)
UNION ALL
SELECT DECODE(nxt, 0, txt, SUBSTR(txt, 1, nxt - 1)),
DECODE(nxt, 0, '', SUBSTR(txt, nxt + 1)),
DECODE(txt, '', 0, LOCATE(',', txt, nxt + 1))
FROM Split
WHERE LENGTH(txt) > 0),
SearchData AS (SELECT value
FROM Split
WHERE value <> '')
SELECT uc
FROM (SELECT REPLACE(refev_veh_type, ' ', '')
|| REPLACE(refev_category, ' ', '')
|| REPLACE(refev_usage, ' ', '')
|| REPLACE(refev_body_code, ' ', '') AS uc
FROM TRef_ENF_Vehicle_Type ) T
JOIN SearchData
ON T.uc LIKE SearchData.value
(未经测试,因为我没有方便的DB2实例)
假设 $P{COLUMN}
包含以下字符串:'%06TBISUM%,%B,%BAS'
。