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

SQL Server 2014中如何实现字符串字符类型模式提取函数?

SQL Server 2014 实现字符串模式生成函数

需求说明

将字符串中的字母替换为a、数字替换为1、其他字符替换为x(例如abc123-123转换为aaa111x111),生成Pattern列后可按该列分组统计数据条目数量。

自定义GETPATTERN函数实现

在SQL Server 2014中,可通过创建标量值函数逐字符判断并替换:

CREATE FUNCTION dbo.GETPATTERN(@InputString NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
    DECLARE @Pattern NVARCHAR(MAX) = ''
    DECLARE @Index INT = 1
    DECLARE @Char CHAR(1)

    WHILE @Index <= LEN(@InputString)
    BEGIN
        SET @Char = SUBSTRING(@InputString, @Index, 1)
        SET @Pattern = @Pattern + 
            CASE
                WHEN @Char LIKE '[a-zA-Z]' THEN 'a'
                WHEN @Char LIKE '[0-9]' THEN '1'
                ELSE 'x'
            END
        SET @Index = @Index + 1
    END

    RETURN @Pattern
END
GO

使用示例

假设存在表YourTable,包含目标列TargetColumn,执行以下语句生成模式并分组统计:

SELECT 
    dbo.GETPATTERN(TargetColumn) AS Pattern,
    COUNT(*) AS Count
FROM YourTable
GROUP BY dbo.GETPATTERN(TargetColumn)
ORDER BY Count DESC

Python 实现示例

对应逻辑的Python代码实现如下:

def get_pattern(input_str):
    pattern = []
    for char in input_str:
        if char.isalpha():
            pattern.append('a')
        elif char.isdigit():
            pattern.append('1')
        else:
            pattern.append('x')
    return ''.join(pattern)

# 测试示例
test_str = 'abc123-123'
print(get_pattern(test_str))  # 输出: aaa111x111

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:13:09