带通配符的sql In子句(DB2)

时间:2014-06-08 05:55:15

标签: sql db2 wildcard

无论如何在类似于" in"的条款中使用通配符,就像这样

select * from table where columnx xxxxxxx ('%a%','%b%')?

我知道我能做到:

select * from table where (columnx like '%a%' or columnx like '%b%')

但我正在寻找一种替代方法来缩短查询字符串。

BTW:我无法注册任何自定义函数,也无法注册临时表,它应该是本机DB2函数。

我为oracle和SQLServer找到了类似的答案:

Is there a combination of "LIKE" and "IN" in SQL?

1 个答案:

答案 0 :(得分:2)

在" pureSQL"中没有本地正则表达式支持。对于DB2,您可以创建自己的:

http://www.ibm.com/developerworks/data/library/techarticle/0301stolze/0301stolze.html

或使用pureXML,如:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.xml.doc/doc/xqrfnmat.html

示例:

where xmlcast(xmlquery('fn:matches(\$TEXT,''^[A-Za-z 0-9]*$'')') as integer) = 0

另一种可能更短的变体:

select t.* 
from table t
join ( values '%a%', '%b%' ) u (columnx)
   on t.columnx like u.columnx