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

SQL Server技术问询:查找以ukinvoice开头且结尾数值>00030的字符串

在SQL Server中筛选符合特定格式的字符串

针对你要找的以ukinvoice开头、且结尾数值部分大于00030的字符串,我整理了几种可行的SQL写法,适配不同场景:


基础写法(假设结尾数值为纯数字)

如果你的目标字符串结构类似示例ukinvoice1245345.inv.1245788945.3.00030,最后一段是固定的数值部分,可以通过字符串函数提取并比较:

SELECT your_column
FROM your_table
WHERE 
    -- 确保字符串以ukinvoice开头
    your_column LIKE 'ukinvoice%'
    -- 提取最后一段数值转成整数,判断是否大于30(00030转整数就是30)
    AND CAST(RIGHT(your_column, CHARINDEX('.', REVERSE(your_column)) - 1) AS INT) > 30;

代码说明:

  • your_column LIKE 'ukinvoice%':快速匹配所有以ukinvoice开头的字符串,%通配符匹配任意后续内容。
  • REVERSE(your_column):反转字符串,让原字符串最后一个.变成第一个.,方便定位结尾数值的位置。
  • CHARINDEX('.', REVERSE(your_column)):找到反转后第一个.的索引,对应原字符串最后一个.的位置。
  • RIGHT(your_column, ... -1):截取最后一个.后面的内容,也就是我们要的结尾数值。
  • CAST(...) AS INT:把数值字符串转成整数,前导零不会影响比较结果(比如00031转整数是31,大于30)。

容错写法(避免非数字结尾报错)

如果数据里可能存在结尾不是纯数字的情况,建议用TRY_CAST替代CAST,转换失败时会返回NULL,不会导致查询报错:

SELECT your_column
FROM your_table
WHERE 
    your_column LIKE 'ukinvoice%'
    AND TRY_CAST(RIGHT(your_column, CHARINDEX('.', REVERSE(your_column)) - 1) AS INT) > 30;

简化写法(结尾数值固定5位)

如果你能确定结尾数值一定是5位(比如示例里的00030),可以直接用字符串比较,写法更简洁:

SELECT your_column
FROM your_table
WHERE 
    your_column LIKE 'ukinvoice%'
    AND RIGHT(your_column, 5) > '00030';

这种方式直接取最后5个字符和00030做字符串比较,因为都是5位,字符串比较结果和数值比较一致(比如00031 > 00030,00029 < 00030)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:57:20