首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这两条SQL语句是否等价?一个可以工作,另一个不行

这两条SQL语句是否等价?一个可以工作,另一个不行
EN

Stack Overflow用户
提问于 2019-06-11 01:26:13
回答 3查看 57关注 0票数 1

我在w3schools学习SQL。我正在学习这一章:https://www.w3schools.com/sql/sql_having.asp

我决定使用通配符,只是为了让它更有趣。当我在线尝试第一个SQL语句时,它似乎可以工作,但第二个SQL语句不起作用。这就是为什么我想知道这两个SQL语句是否等价。

1)

代码语言:javascript
运行
复制
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)

代码语言:javascript
运行
复制
SELECT COUNT(CustomerID) AS Total, Country
FROM Customers
WHERE Country LIKE '[ugf]%' 
GROUP BY Country
HAVING Total > 5
ORDER BY Total DESC;

它没有显示错误消息,它只显示"No result“。当我在这里尝试第二个SQL语句时:https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_having

第一条SQL语句可以工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-11 01:28:25

这两者仅在SQL Server (和Sybase)中等效。它们扩展了LIKE模式以包括字符类(方括号内的字母)。

在其他数据库中,LIKE模式只有两个通配符%_。方括号就是,方括号。国家名称不太可能与它们相匹配。

票数 4
EN

Stack Overflow用户

发布于 2019-06-11 01:28:12

如果您使用的是T-SQL,则它们是等效的。[]语法是Microsoft SQL Server/Sybase扩展。

票数 2
EN

Stack Overflow用户

发布于 2019-06-11 01:42:21

正如其他人所说,这只适用于SQL Server和Sybase。Oracle的等价物将需要使用REGEXP_LIKE函数来允许正则表达式匹配:

代码语言:javascript
运行
复制
SELECT COUNT(CustomerID) AS Total, Country
FROM Customers
WHERE regex_like(Country, '^[ugf]','c')
GROUP BY Country
HAVING Total > 5
ORDER BY Total DESC;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56530908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档