【问题标题】:REGEXP_LIKE DB2 regex patternREGEXP_LIKE DB2 正则表达式模式
【发布时间】:2020-08-25 11:13:16
【问题描述】:

我尝试通过我的 sql 查询查询搜索模式,但无法获得结果。

SELECT * FROM table1 where REGEXP_LIKE(paramater,'^*RHEL[RHEL77435]','i') 

我的目标是搜索以包括 * (*RHEL) 在内的前 4 个字符开头并包含元字符 [] 中的任何字符输入的模式,这种情况是 (RHEL77435)。

SELECT * FROM table1 where REGEXP_LIKE(paramater,'^*RH[RHEL77435]','i')

当我尝试 2 个字符 (RH) 时,它对我有用

预期输出:

|---------------------|------------------|----------------|
|      ruleid         |     parameter    |     Operating  |
|---------------------|------------------|--------------- |
|          1          |      *RHEL       |       Linux    |
|---------------------|------------------|----------------|

谢谢。

【问题讨论】:

  • 请提供样本数据和期望的结果。您要搜索的模式不清楚。
  • 好的,我刚刚以表格形式添加了预期的内容
  • 添加包含现有数据的表以供选择。结果只对一些输入有意义
  • 您的意思是您需要查找以星号开头的记录,然后是RHEL 子字符串,然后是任何字符?试试^[*]RHEL.*
  • @Wiktor Stribiżew,是的,它对我有用,谢谢。顺便说一句,我可以知道为什么把点和星号放在最后吗?

标签: sql regex db2 regexp-like


【解决方案1】:

为什么不直接使用=

SELECT *
FROM table1 
WHERE parameter = '*RHEL';

或者,如果'*RHEL' 后面还有其他字符,则使用LIK

SELECT *
FROM table1 
WHERE parameter LIKE '*RHEL%';

【讨论】:

  • 原因是我想稍后添加更复杂的正则表达式。但这让我很困惑,我试图在 regex_like 中添加条件。前 3 个字符对我有用(RHE),但是当我尝试添加更多字符时它不起作用。我想知道我是否可以将 LIKE 与 REGEX_LIKE 结合使用
  • @HydrogenUranium 。 .这适用于您在问题中提供的示例数据。
猜你喜欢
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 2012-02-12
  • 2018-10-29
相关资源
最近更新 更多