我正在w3schools学习SQL。我正在学习本章: https://www.w3schools.com/sql/sql_having.asp
我决定使用通配符只是为了使它有趣。 当我在线尝试时,第一个SQL语句似乎可以工作,但第二个则无效。 这就是为什么我想知道两个SQL语句是否等效。
1)
SELECT COUNT(CustomerID) AS Total, Country
FROM Customers
WHERE Country LIKE 'u%' OR Country LIKE 'g%' OR Country LIKE 'f%'
GROUP BY Country
HAVING Total > 5
ORDER BY Total DESC;
2)
SELECT COUNT(CustomerID) AS Total, Country
FROM Customers
WHERE Country LIKE '[ugf]%'
GROUP BY Country
HAVING Total > 5
ORDER BY Total DESC;
它不会显示错误消息,而只会显示“无结果”。当我在这里尝试第二条SQL语句时: https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_having
第一个SQL语句确实起作用。
答案 0 :(得分:4)
两者仅在SQL Server(和Sybase)中等效。这些扩展了LIKE
模式以包括字符类(方括号内的字母)。
在其他数据库中,LIKE
模式只有两个通配符%
和_
。方括号就是方括号。国家名称不太可能与它们匹配。
答案 1 :(得分:2)
如果您使用的是T-SQL,则它们等效。 []
语法是Microsoft SQL Server / Sybase扩展。
答案 2 :(得分:2)
正如其他人所述,这仅适用于SQL Server和Sybase。与Oracle等效的版本需要使用REGEXP_LIKE函数来允许正则表达式匹配:
user_posts