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

SQL Server 2014中如何高效提取字符串内指定螺栓长度整数?

提取SQL Server 2014工程数据表中目标螺栓长度的优化方案

针对你需要从SQL Server 2014工程数据表的描述字段里提取第二个螺栓长度(数值较大、位于字符串末尾固定位置、长度2-3位)的需求,以下是比嵌套IF+SUBSTRING更简洁的实现方案:

示例数据

STUD BOLT SET, SANS 1700, GR 8.8, SANS 1700, GR 8, GALVANISED (8 X M24 X 140 LG C/W 1 NUT, 12 X M24 X 170 LG C/W 1 NUT)
STUD BOLT SET, SANS 1700, GR 8.8, SANS 1700, GR 8, GALVANISED (2 X M20 X 80 LG C/W 1 NUT, 6 X M20 X 90 LG C/W 1 NUT)
STUD BOLT SET, SANS 1700, GR 8.8, SANS 1700, GR 8, GALVANISED (8 X M24 X 130 LG C/W 1 NUT, 12 X M24 X 150 LG C/W 1 NUT)
STUD BOLT SET, ASME B1.1, ASTM A193 B7, ASME B1.1, ASTM A194 GR 2H, GALVANISED (28 x 1 3/4" UN8 x 270 LG C/W 1 NUT)

优化实现方案

利用REVERSE、SUBSTRING和PATINDEX函数组合,无需嵌套条件判断即可自动提取目标数值:

SELECT 
    Description,
    -- 提取目标螺栓长度
    REVERSE(
        SUBSTRING(
            REVERSE(Description),
            CHARINDEX('GL ', UPPER(REVERSE(Description))) + 3,
            PATINDEX('%[^0-9]%', SUBSTRING(REVERSE(Description), CHARINDEX('GL ', UPPER(REVERSE(Description))) + 3, 10)) - 1
        )
    ) AS BoltLength
FROM EngineeringData; -- 替换为你的实际表名

方案说明

  1. 反转字符串:将原描述反转,把目标数值后的LG 转换为GL ,方便从末尾定位数值位置
  2. 定位起始点:通过CHARINDEX找到反转后GL 的位置,偏移3位得到目标数值反转后的起始位置
  3. 提取数字序列:用PATINDEX匹配从起始点开始的第一个非数字字符,确定数字长度,截取后再反转回原始数值
  4. 大小写兼容:通过UPPER处理反转后的字符串,适配描述中可能存在的小写lg情况

这个方案无需手动判断数值长度(2-3位),代码简洁易维护,适配所有符合格式的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:23:18