MariaDB vs MySQL * 两者都如何处理 SELECT * 来自客户,其中城市喜欢 '[acs]%';



当我在mysql上运行以下内容:

SELECT * FROM Customers WHERE City LIKE '[acs]%';

我得到了预期的结果。

但是,MariadB上的同一查询返回一个空集。我做错了吗?

我已经看了文档,似乎他们希望它更像

SELECT * FROM Customers WHERE City RLIKE '(a|c|s)'. 

是否有两者都可以使用的命令?我应该使用regexp?

SELECT * FROM Customers WHERE City REGEXP 'a|c|s'

是的

SELECT * FROM Customers WHERE City REGEXP '[acs]'

此查询在mysql上返回结果很不可能:

SELECT *
FROM Customers
WHERE City LIKE '[acs]%';

为什么?没有我知道的城市名称具有'['的角色。而且,如果他们这样做了,似乎他们具有角色']'的可能性甚至较小。

您可能会使MySQL与SQL Server混淆。后者已经扩展了LIKE模式以包括字符类。MySQL中的等效逻辑是:

WHERE City REGEXP '^[acs]'

或,如果您喜欢:

WHERE LEFT(City, 1) IN ('a', 'c', 's')

最新更新