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

适配Microsoft SSMS的SQL查询:提取指定单词前的数字

提取'Test'前的目标数字(兼容Microsoft SSMS的SQL实现)

需求说明

需要从指定字符串中提取紧邻单词'Test'之前的数字(支持整数和小数格式),若字符串不含'Test'则输出无内容提示。

原始数据

String 1: 'Random Text 3 Random 568 Text 5.5 Test Random Text 345'
String 2: 'Random Text 3 Test Text Random'
String 3: 'Random Text 777 Random Text'

预期输出

String 1: '5.5'
String 2: '3'
String 3: 无输出内容

实现SQL语句

假设数据存储在表test_strings中,字段id用于标识字符串序号,content存储目标字符串,以下是兼容SQL Server(SSMS)的查询语句:

SELECT 
    id AS '序号',
    CASE 
        WHEN CHARINDEX('Test', content) = 0 THEN '无输出内容'
        ELSE REVERSE(SUBSTRING(REVERSE(SUBSTRING(content, 1, CHARINDEX('Test', content)-1)), 
                               1, 
                               PATINDEX('%[^0-9.]%', REVERSE(SUBSTRING(content, 1, CHARINDEX('Test', content)-1)) + ' ') - 1))
    END AS '提取结果'
FROM test_strings;

逻辑解释

  1. 检测'Test'是否存在:通过CHARINDEX('Test', content)判断字符串是否包含目标单词,返回0则直接输出提示内容。
  2. 截取'Test'左侧内容:用SUBSTRING获取'Test'之前的所有字符。
  3. 定位数字边界:将左侧内容反转后,通过PATINDEX找到第一个非数字/小数点的字符,确定目标数字的长度。
  4. 还原数字格式:截取反转后的数字部分,再次反转得到原始格式的目标数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:33:10