无论如何在类似于" in"的条款中使用通配符,就像这样
select * from table where columnx xxxxxxx ('%a%','%b%')?
我知道我能做到:
select * from table where (columnx like '%a%' or columnx like '%b%')
但我正在寻找一种替代方法来缩短查询字符串。
BTW:我无法注册任何自定义函数,也无法注册临时表,它应该是本机DB2函数。
我为oracle和SQLServer找到了类似的答案:
答案 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