DB2 LIKE匹配模式

时间:2018-08-30 11:14:43

标签: sql regex db2 sql-like db2-400

我的问题很简单。

在DB2数据库中,我有我的表

Table (Id integer, name varchar)

我要选择名称类似于“ ac1%”或“ ac2%”或“ ac3%”的条目,以便其名称与正则表达式匹配

'^ac[123]*' 

有没有什么方法可以使选择查询不写:

WHERE name LIKE 'ac1%' OR name LIKE 'ac2%' OR name LIKE 'ac2%'

3 个答案:

答案 0 :(得分:4)

可能最有效的方法是:

where name >= 'ac1' and
      name < 'ac4'

您也可以使用regular expressions

where regexp_like(name, '^ac[1-3]')

答案 1 :(得分:0)

取决于您的Db2服务器平台(Z / OS,i系列,Linux / Unix / Windows)和Db2版本,您可以使用 REGEXP_LIKE 函数。这样就可以使用SQL中的正则表达式。

请参阅文档和示例here

答案 2 :(得分:0)

我认为下面的方法会起作用,因为如果REGEXP_LIKE(col,'[0-9]{3}-[0-9]{3}-[0-9]{2}')包含0到9的任何值,则col将始终返回true

  SELECT * FROM table1 
   WHERE  REGEXP_LIKE(name,'[1-3]')