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

查询不以元音开头的name的SQL语句执行无输出问题求助

问题原因及解决方法

核心原因:通配符语法不兼容

你使用的LIKE '[!aeiou]%'是SQL Server专属的否定字符范围语法,但如果你的数据库是MySQL、PostgreSQL、SQLite等其他主流数据库,这个写法不会被识别——这些数据库中,否定字符范围的正确写法是[^aeiou]。

当数据库无法解析[!aeiou]时,会将其当作普通字符串字面量匹配,而你的数据里没有任何name字段是以[!aeiou]开头的,因此返回空结果。

次要潜在问题:CHAR类型的空格填充

你的name字段定义为char(10),所有插入的字符串会被自动填充空格至10位(比如sukesh会变成sukesh )。虽然这不会直接导致当前查询无结果,但后续做精确匹配时可能引发问题,建议改为varchar(10)避免不必要的空格填充。

修正后的查询语句

根据你的数据库类型选择对应写法:

1. 适用于MySQL、PostgreSQL、SQLite等

SELECT * FROM test
WHERE name LIKE '[^aeiou]%';

2. 适用于SQL Server(原写法理论有效,若仍无结果可检查大小写)

如果使用SQL Server但仍无结果,可能是大小写敏感问题,可调整为不区分大小写的匹配:

SELECT * FROM test
WHERE name LIKE '[!AEIOUaeiou]%';

或者指定不区分大小写的排序规则:

SELECT * FROM test
WHERE name LIKE '[!aeiou]%' COLLATE SQL_Latin1_General_CP1_CI_AS;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:21:23