我有两个问题。
SELECT count(AlbumID)
FROM album
WHERE albumname like '%[%]';
结果:15733
SELECT count(AlbumName)
FROM album
WHERE AlbumName RLIKE '.*\\[.*\\]';
结果:15740
如您所见,like返回的元素比rlike少7个。我有两个问题为什么?这些说法不一样吗?如果我要查找包含let的名称,比如
Result: Artist - Song [Live]
或Result: Artist- Song [Gold CD, Excplicit Lyrics]
,那么查询会返回正确的结果吗? 最佳答案
完全等价于
LIKE '%[%]'
是
REGEXP '^.*\\[.*\\]$'
(注意,RLIKE只是一个mSQL'ish synonym of REGEXP)。简而言之,这意味着
LIKE
总是匹配整个字符串,而REGEXP
和RLIKE
可能匹配任何子字符串。这就是为什么我会假设有七张专辑
MyName[abc]plus
或
MyName [abc]!
你可以试着通过
SELECT AlbumName FROM album
WHERE AlbumName RLIKE '.*\\[.*\\]' AND AlbumName NOT RLIKE '^.*\\[.*\\]$';