SQL筛选字段首字符为A-Z的值,排除数字首字符的实现方法
解决方案
方法1:字符范围匹配(通用多数SQL数据库)
直接通过字符范围匹配首字母为A-Z(含大小写)的记录,自动排除首字符为数字的情况:
SELECT * FROM your_table WHERE UPPER(LEFT(AD_ADDR, 1)) BETWEEN 'A' AND 'Z';
如果数据库默认区分大小写,也可以同时匹配大小写字母:
SELECT * FROM your_table WHERE LEFT(AD_ADDR, 1) BETWEEN 'A' AND 'Z' OR LEFT(AD_ADDR, 1) BETWEEN 'a' AND 'z';
方法2:正则表达式匹配(按数据库类型选择)
不同数据库的正则语法略有差异,以下是主流数据库的实现方式:
- MySQL/MariaDB:使用
REGEXP
SELECT * FROM your_table WHERE AD_ADDR REGEXP '^[A-Za-z]';
- PostgreSQL:使用
~操作符
SELECT * FROM your_table WHERE AD_ADDR ~ '^[A-Za-z]';
- SQL Server:使用
PATINDEX
SELECT * FROM your_table WHERE PATINDEX('[A-Za-z]%', AD_ADDR) = 1;
- Oracle:使用
REGEXP_LIKE
SELECT * FROM your_table WHERE REGEXP_LIKE(AD_ADDR, '^[A-Za-z]');
你之前的语句UPPER(LEFT(AD_ADDR,1)) like 'A%'仅能匹配首字母为A的记录,而上述两种方法可以一次性匹配所有A-Z的字母,同时因为数字不在A-Z的字符范围内,会被自动排除。
内容的提问来源于stack exchange,提问作者PeterH
相关产品推荐
相关产品推荐

