sql - SQL Server 中的 LIKE 函数

标签 sql sql-server select sql-like

STATION 表中查询不以元音开头且不以元音结尾的 CITY 名称列表。您的结果不能包含重复项。

https://www.hackerrank.com/challenges/weather-observation-station-12/problem

使用 LIKE 运算符,我提出了 3 个查询,如下所示:

工作中

SELECT DISTINCT CITY 
FROM STATION 
WHERE CITY NOT LIKE '[aeiou]%' 
  AND CITY NOT LIKE '%[aeiou]'

工作中

SELECT DISTINCT CITY 
FROM STATION 
WHERE CITY LIKE '[^aeiou]%[^aeiou]';

不工作:

SELECT DISTINCT CITY 
FROM STATION 
WHERE CITY NOT LIKE '[aeiou]%[aeiou]';

有人可以告诉我为什么第三个查询不起作用吗?

最佳答案

WHERE CITY NOT LIKE '[aeiou]%' 
  AND CITY NOT LIKE '%[aeiou]'

此查询返回元音的字符开头并且以其结尾的行。

这基本上就是所问的问题。


WHERE CITY LIKE '[^aeiou]%[^aeiou]';

此查询返回的行:以不是元音的字符开头,并且不是元音。

这并不完全相同,因为它需要至少两个字符,而第一个版本只需要一个字符。


WHERE CITY NOT LIKE '[aeiou]%[aeiou]';

此查询返回的行:以元音的字符开头,并且以元音的字符结尾.

这与之前的查询完全不同。另一种表达方式是:do以非元音开头或以非元音结尾的行。

关于sql - SQL Server 中的 LIKE 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73618470/

相关文章:

php - 多个SQL查询来选择数据MySql php

php - 使用 php/MySQL 的定时事件

php - Amazon SNS 移动推送 - 如何发送/发布到多个终端节点?

mysql - Emacs' `sql-mysql`,ec2

java - 连接到本地 MS SQL Server

sql-server - Oracle SSIS 包错误响应

sql-server - 全文搜索 - 同义词库文件未加载/工作

php - 如何获取包含搜索项的数据

mysql - 选择与某个字段匹配的记录,但按不同的字段对它们进行排序

javascript - 如何在不清除选择控件的情况下突出显示鼠标悬停