【发布时间】:2020-02-08 15:06:44
【问题描述】:
我想选择所有以元音字符开头和结尾的城市。我看到了不同的方式,但我很困惑哪一种性能更好?
select distinct city from the station
SELECT DISTINCT CITY
FROM station
WHERE left(city, 1) IN (
'a'
,'e'
,'i'
,'o'
,'u'
)
AND right(city, 1) IN (
'a'
,'e'
,'i'
,'o'
,'u'
)
使用正则表达式的第二种方式:
SELECT DISTINCT CITY
FROM station
WHERE city regexp '[aeiou]$'
AND city IN (
SELECT CITY
FROM STATION
WHERE CITY REGEXP '^[aeiou]'
);
最后一种方法是:
SELECT DISTINCT city
FROM station
WHERE (
lower(city) LIKE 'a%'
OR lower(city) LIKE 'e%'
OR lower(city) LIKE 'i%'
OR lower(city) LIKE 'o%'
OR lower(city) LIKE 'u%'
)
AND (
lower(city) LIKE '%a'
OR lower(city) LIKE '%e'
OR lower(city) LIKE '%i'
OR lower(city) LIKE '%o'
OR lower(city) LIKE '%u'
)
哪个更好,为什么?
【问题讨论】:
-
正确标记。 MySQL 不是 TSQL,它们使用不同的 sql 方言。 TSQL 没有正则表达式函数。