1

我有两个疑问。

SELECT count(AlbumID)
  FROM album
  WHERE albumname like '%[%]';

结果:15733

SELECT count(AlbumName)
  FROM album
  WHERE AlbumName RLIKE '.*\\[.*\\]';

结果:15740

如您所见,like 返回的元素比 rlike 少 7 个。我有两个问题为什么会这样?陈述不一样吗?如果我正在寻找包含 let say 的名称,Result: Artist - Song [Live]或者Result: Artist- Song [Gold CD, Excplicit Lyrics]查询会返回正确的结果?

4

1 回答 1

4

的精确等效

LIKE '%[%]' 

REGEXP '^.*\\[.*\\]$'

(请注意,RLIKE 只是REGEXP 的 mSQL 同义词)。简而言之,这意味着LIKE始终匹配整个字符串,而REGEXP并且RLIKE可以匹配任何子字符串。

这就是为什么我会假设周围显然有七个专辑名称

MyName[abc]plus

或者

MyName [abc]!

您可以尝试通过以下方式确定这七条记录

SELECT AlbumName FROM album 
WHERE AlbumName RLIKE '.*\\[.*\\]' AND AlbumName NOT RLIKE '^.*\\[.*\\]$';
于 2016-05-29T10:09:45.430 回答