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

如何编写查询语句返回以零个或多个数字结尾的字符串

解决方案:匹配以'amit'开头且结尾为零个或多个数字的字符串

你用LIKE 'amit%'没得到预期结果是因为%通配符会匹配任意字符(包括字母),所以'amityy'这种后缀为非数字的字符串也会被选中。要精准筛选出符合要求的内容,我们需要用正则表达式来约束结尾的字符类型,不同数据库的写法略有差异:

MySQL/MariaDB

使用REGEXP操作符,正则表达式^amit[0-9]*$可以完美匹配你的需求:

SELECT your_column FROM your_table 
WHERE your_column REGEXP '^amit[0-9]*$';
  • ^:匹配字符串的开头
  • amit:固定前缀
  • [0-9]*:匹配零个或多个数字(*表示允许出现0次)
  • $:匹配字符串的结尾,确保后缀只有数字或没有字符

PostgreSQL

使用~操作符(PostgreSQL的正则匹配运算符):

SELECT your_column FROM your_table 
WHERE your_column ~ '^amit[0-9]*$';

正则规则和上面一致,~在PostgreSQL中表示“匹配正则表达式”。

SQL Server(2016及以上版本)

使用REGEXP_LIKE函数:

SELECT your_column FROM your_table 
WHERE REGEXP_LIKE(your_column, '^amit[0-9]*$');

如果你的SQL Server版本较低(不支持正则函数),可以用LIKE组合条件实现:

SELECT your_column FROM your_table 
WHERE (your_column = 'amit' OR your_column LIKE 'amit[0-9]%')
AND your_column NOT LIKE 'amit%[^0-9]%';

这个逻辑是:要么完全等于'amit',要么以'amit'加数字开头,同时确保后面没有非数字字符。

用这些语句查询你的示例数据('amit'、'amityy'、'amit001'),只会返回'amit'和'amit001',完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:32:39