我想查询表格中的CITY名字列表,这些名字的STATION(id, city, longitude, latitude)元音是他们的第一个和最后一个字符.结果不能包含重复项.
为此我写了一个类似于WHERE NAME LIKE 'a%'25条件的查询,每个元音都用于其他每个元音,这是非常笨拙的.有没有更好的方法呢?
Mur*_*nik 52
您可以使用正则表达式:
SELECT DISTINCT city
FROM   station
WHERE  city RLIKE '^[aeiouAEIOU].*[aeiouAEIOU]$'
Ban*_*yan 16
在Microsoft SQL Server中,您可以从以下查询中实现此目的:
SELECT distinct City FROM STATION WHERE City LIKE '[AEIOU]%[AEIOU]'
要么
SELECT distinct City FROM STATION WHERE City LIKE '[A,E,I,O,U]%[A,E,I,O,U]'
小智 12
您可以为 MySQL 尝试一种简单的解决方案:
SELECT DISTINCT city FROM station WHERE city REGEXP "^[aeiou].*[aeiou]$";
Bar*_*mar 11
使用正则表达式.
WHERE name REGEXP '^[aeiou].*[aeiou]$'
^并将$匹配锚定到值的开头和结尾.
在我的测试中,这不会在name列上使用索引,因此需要执行完整扫描
WHERE name LIKE 'a%a' OR name LIKE 'a%e' ...
我认为要使用一个索引,你需要使用每个测试第一个字母的查询联合.
SELECT * FROM table
WHERE name LIKE 'a%' AND name REGEXP '[aeiou]$'
UNION
SELECT * FROM table
WHERE name LIKE 'e%' AND name REGEXP '[aeiou]$'
UNION
SELECT * FROM table
WHERE name LIKE 'i%' AND name REGEXP '[aeiou]$'
UNION
SELECT * FROM table
WHERE name LIKE 'o%' AND name REGEXP '[aeiou]$'
UNION
SELECT * FROM table
WHERE name LIKE 'u%' AND name REGEXP '[aeiou]$'
小智 9
你可以试试这个
    select city
    from station where SUBSTRING(city,1,1) in ('A','E','I','O','U') and 
    SUBSTRING(city,-1,1) in ('A','E','I','O','U');
您可以对第一个和最后一个字符进行子字符串化并将其与 IN 关键字进行比较,
WHERE SUBSTRING(NAME,1,1) IN (a,e,i,o,u) AND SUBSTRING(NAME,-1) IN (a,e,i,o,u) 
小智 5
SELECT distinct CITY 
FROM STATION 
where (CITY LIKE 'a%' 
    OR CITY LIKE 'e%' 
    OR CITY LIKE 'i%' 
    OR CITY LIKE 'o%'
    OR CITY LIKE 'u%'
) AND (CITY LIKE '%a' 
    OR CITY LIKE '%e'
    OR CITY LIKE '%i'
    OR CITY LIKE '%o'
    OR CITY LIKE '%u'
)
您可以使用以下正则表达式并反转结果:
^[^aeiou]|[^aeiou]$
即使输入由单个字符组成,这也有效。它应该可以跨不同的正则表达式引擎工作。
SELECT city
FROM (
    SELECT 'xx' AS city UNION
    SELECT 'ax'         UNION
    SELECT 'xa'         UNION
    SELECT 'aa'         UNION
    SELECT 'x'          UNION
    SELECT 'a'
) AS station
WHERE NOT city REGEXP '^[^aeiou]|[^aeiou]$'
PostgreSQL
WHERE NOT city ~ '^[^aeiou]|[^aeiou]$'
WHERE NOT REGEXP_LIKE(city, '^[^aeiou]|[^aeiou]$')`
SQL服务器
没有正则表达式支持。使用LIKE带有方括号的子句:
WHERE city LIKE '[aeiou]%' AND city LIKE '%[aeiou]'
| 归档时间: | 
 | 
| 查看次数: | 98035 次 | 
| 最近记录: |