SQL REGEXP 搜索忽略“.”

SQL REGEXP search ignoring '.'

我正在尝试对数据库中的所有内容执行 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

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

你必须转义点,像这样:

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

REGEXP 可以 return 部分匹配,不需要全字符串匹配。

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

AND name REGEXP '[.]cxx$'

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

或者直接使用LIKE

AND name LIKE '%.cxx'