You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询SQL语句SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE '[aeiou]%'无法运行的原因

为啥你的SQL语句跑不起来?

嘿,这个问题我太熟了!你写的SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE '[aeiou]%';里,LIKE '[aeiou]%'是SQL Server(T-SQL)专属的正则风格通配符写法,但绝大多数其他数据库(比如MySQL、PostgreSQL、Oracle)根本不认这套语法,这就是它执行失败的核心原因~

不同数据库的正确写法

下面给你列几个主流数据库的解决方案:

  • MySQL/MariaDB:用REGEXP(或RLIKE)来做正则匹配,或者用多个OR条件兜底:

    -- 正则写法(推荐)
    SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '^[aeiou]';
    
    -- 多OR写法(兼容性更强)
    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%';
    
  • PostgreSQL:用~操作符实现正则匹配,加*可以忽略大小写:

    -- 区分大小写
    SELECT DISTINCT CITY FROM STATION WHERE CITY ~ '^[aeiou]';
    
    -- 忽略大小写
    SELECT DISTINCT CITY FROM STATION WHERE CITY ~* '^[aeiou]';
    
  • Oracle:使用REGEXP_LIKE函数,第三个参数'i'表示忽略大小写:

    SELECT DISTINCT CITY FROM STATION WHERE REGEXP_LIKE(CITY, '^[aeiou]', 'i');
    

额外说明

要记住:标准SQL里的LIKE操作符只支持%(匹配任意长度字符)和_(匹配单个字符)这两个通配符。[aeiou]这种字符组匹配是T-SQL的扩展特性,没法跨数据库通用。如果不确定自己用的是什么数据库,用多OR的写法兼容性最好~

内容的提问来源于stack exchange,提问作者chander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:54:29