【问题标题】:SQL REGEXP search ignoring '.'SQL REGEXP 搜索忽略“。”
【发布时间】:2018-04-18 20:07:29
【问题描述】:

我正在尝试对数据库中的所有内容进行 REGEXP 搜索,并且我正在尝试获取所有 .cxx 文件类型。我目前的搜索是这样的

SELECT * FROM sourcefile 
WHERE idowner IS NULL AND name REGEXP '.cxx'

当前的输出类似于

filecxx.txt 
file.cxx  
test.cxx

但是,我只想显示 .cxx 文件,而不仅仅是名称中带有 cxx 的文件,因此预期的输出将是

file.cxx  
test.cxx

【问题讨论】:

  • 使用AND name LIKE '%.cxx'AND name REGEXP '[.]cxx$'

标签: sql regex search sqlyog


【解决方案1】:

REGEXP 可能会返回部分匹配,它不需要完整的字符串匹配。

因此,如果需要匹配以.cxx结尾的字符串,则需要

AND name REGEXP '[.]cxx$'

其中[.] 匹配文字.(如果按原样使用,则匹配任何字符),$ 匹配字符串结尾。

或者干脆使用LIKE

AND name LIKE '%.cxx'

【讨论】:

    【解决方案2】:

    您的输出是正确的,因为您使用的是通配符.,这意味着任何字符,然后是cxx,这就是为什么您也匹配ecxx

    你必须像这样转义点:

    SELECT * FROM sourcefile 
    WHERE idowner IS NULL AND name REGEXP '[.]cxx'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2019-12-06
      相关资源
      最近更新 更多