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

SQL中提取字符串特定值:获取InstalmentScheme对应数字值

用SQL提取InstalmentScheme对应的数字值

对于像[AV] Z_Prem_454-3000_XXXXX_800+ [InstalmentScheme 6]这样格式的字符串,你可以用以下SQL语句替代原来的C#代码完成数字提取,同时覆盖空值等异常场景:

SQL Server 实现示例

SELECT 
    CASE
        -- 输入为空或NULL时返回null
        WHEN input_string IS NULL OR input_string = '' THEN NULL
        ELSE
            CASE
                -- 字符串里没空格的话返回空字符串
                WHEN CHARINDEX(' ', REVERSE(input_string)) = 0 THEN ''
                ELSE
                    -- 截取最后一个空格到末尾]之间的内容,去空格后校验是否为数字
                    CASE
                        WHEN TRY_CAST(
                            LTRIM(RTRIM(
                                SUBSTRING(
                                    input_string,
                                    LEN(input_string) - CHARINDEX(' ', REVERSE(input_string)) + 2,
                                    CHARINDEX(']', REVERSE(input_string)) - CHARINDEX(' ', REVERSE(input_string)) - 1
                                )
                            )) AS INT
                        ) IS NOT NULL THEN
                            LTRIM(RTRIM(
                                SUBSTRING(
                                    input_string,
                                    LEN(input_string) - CHARINDEX(' ', REVERSE(input_string)) + 2,
                                    CHARINDEX(']', REVERSE(input_string)) - CHARINDEX(' ', REVERSE(input_string)) - 1
                                )
                            ))
                        ELSE NULL
                    END
            END
    END AS InstalmentSchemeNumber
FROM your_table;

逻辑对应说明

完全匹配你原来C#代码的逻辑:

  • 输入为空/NULL时返回NULL
  • 字符串里找不到空格时返回空字符串
  • 精准截取最后一个空格到末尾]前的内容,去除前后空格
  • 校验截取内容是否为数字,是则返回,否则返回NULL

原C#代码(中文注释版)

public static string Extract(string input)
{
    // 输入为空或NULL时返回null
    if (string.IsNullOrEmpty(input)) return null;
    // 定位最后一个空格的位置
    var lastIndex = input.LastIndexOf(' ');
    // 找不到空格时返回空字符串
    if (lastIndex < 0) return "";

    // 截取最后一个空格到倒数第一个字符(去掉末尾的]),并去除前后空格
    var code = input[lastIndex..^1].Trim();

    // 校验是否为数字,是则返回该值,否则返回null
    return CheckingIfNumber(code) ? code : null;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:25:22