SQL如何筛选列中最后三个字符为数字的行?
提取列最后三个字符均为数字的行的SQL实现
你之前用WHERE your_column LIKE 'AB___'的方式只是匹配以AB开头、后面跟任意三个字符的行,所以会包含不符合要求的结果(比如ABQ52、AB18C)。要精准筛选最后三个字符全为数字的行,不同数据库可以用以下方法:
针对不同数据库的实现方式
MySQL/MariaDB
使用正则表达式匹配结尾的三个数字:
SELECT * FROM your_table WHERE your_column REGEXP '[0-9]{3}$';
如果需要同时限定以AB开头:
SELECT * FROM your_table WHERE your_column REGEXP '^AB[0-9]{3}$';
PostgreSQL
方法1:正则匹配
SELECT * FROM your_table WHERE your_column ~ '[0-9]{3}$';
方法2:截取后三位判断是否为纯数字
SELECT * FROM your_table WHERE RIGHT(your_column, 3) ~ '^[0-9]+$';
SQL Server
方法1:LIKE模式匹配
SELECT * FROM your_table WHERE your_column LIKE '%[0-9][0-9][0-9]';
方法2:截取后三位结合数字判断(SQL Server 2008及以上)
SELECT * FROM your_table WHERE ISNUMERIC(RIGHT(your_column, 3)) = 1;
方法3:正则匹配(SQL Server 2016及以上支持)
SELECT * FROM your_table WHERE REGEXP_LIKE(your_column, '[0-9]{3}$');
内容的提问来源于stack exchange,提问作者user398843
相关产品推荐
相关产品推荐

