SQL REGEXP搜索忽略'。'

时间:2018-04-18 20:07:29

标签: sql regex search sqlyog

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

2 个答案:

答案 0 :(得分:1)

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

你必须逃避点,如下:

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

答案 1 :(得分:1)

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

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

AND name REGEXP '[.]cxx$'

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

或者只使用LIKE

AND name LIKE '%.cxx'