我有两个问题。
SELECT count(AlbumID)
FROM album
WHERE albumname like '%[%]';
结果:15733
SELECT count(AlbumName)
FROM album
WHERE AlbumName RLIKE '.*\\[.*\\]';
结果:15740
因此,您可以看到返回7个元素比rlike少。我有两个问题,为什么呢?陈述不一样吗?如果我要查找包含让我们说Result: Artist - Song [Live]
或Result: Artist- Song [Gold CD, Excplicit Lyrics]
的名称,那么查询会返回正确的结果吗?
答案 0 :(得分:2)
的确切等效性
LIKE '%[%]'
是
REGEXP '^.*\\[.*\\]$'
(请注意,RLIKE只是mSQL'ish synonym of REGEXP)。简而言之,这意味着LIKE
始终匹配整个字符串,而REGEXP
和RLIKE
可能匹配任何子字符串。
这就是为什么我会假设有明显的七个AlbumNames,如
MyName[abc]plus
或
MyName [abc]!
您可以尝试通过
确定这7条记录SELECT AlbumName FROM album
WHERE AlbumName RLIKE '.*\\[.*\\]' AND AlbumName NOT RLIKE '^.*\\[.*\\]$';