查询首尾均为元音的无重复城市名及SQL语句失效原因排查
问题分析:SQL语句无法正常运行的原因
你的这段SQL存在逻辑、函数使用及语法层面的多重问题,具体如下:
- 函数使用完全错误:
substr(CITY,1,length(CITY))是截取整个城市名称的完整字符串,而非你需要的首字符或尾字符。要判断首尾字符是否为元音,应该分别截取首字符(substr(CITY,1,1))和尾字符(substr(CITY, length(CITY), 1))。 - 条件逻辑偏离需求:当前条件是判断整个城市名称转小写后是否等于单个元音字母,这和“首尾均为元音”的需求完全不符,只会筛选出名称本身就是单个元音的城市,而非首尾都是元音的城市。
- 引号语法不符合规范:多数SQL数据库(如MySQL、PostgreSQL)中字符串常量需用单引号包裹,你使用的双引号
"a"会被识别为标识符(比如列名)而非字符串值,直接导致语法错误。
如果要实现“查询首尾均为元音的无重复城市名称”需求,可参考以下写法(以MySQL为例):
SELECT DISTINCT CITY FROM STATION WHERE LOWER(SUBSTR(CITY, 1, 1)) IN ('a', 'e', 'i', 'o', 'u') AND LOWER(SUBSTR(CITY, LENGTH(CITY), 1)) IN ('a', 'e', 'i', 'o', 'u');
内容的提问来源于stack exchange,提问作者Whoops
相关产品推荐
相关产品推荐

