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

基于掩码生成银行账号字符串的SQL实现求助

基于掩码替换生成目标银行账号字符串

给定26位银行账号:38116022445159832409307409,以及7个匹配掩码(匹配规则为账号与掩码的第3-10位完全一致),需将掩码中的所有Y替换为账号对应位置的数字,X和固定数字保持不变,生成目标字符串。

掩码列表

XX11602244YYYXXXXXXXXXXXXX
XX11602244YYYYXXXXXXXXXXXX
XX11602244YYYYXXXXXYYXXXXX
XX11602244YYYYYXXXXXXXXXXX
XX11602244YYYYYYXXXXXXXXXX
XX11602244YYYYYYYXXXXXXXXX
XX11602244YYYYYYYXXXXXXXYY

解决方案(SQL实现)

通过逐字符遍历掩码,判断每个位置是否为Y,若是则替换为账号对应位置的数字,否则保留原字符。以下是具体实现代码:

DECLARE @Account VARCHAR(26) = '38116022445159832409307409';

-- 创建临时掩码表
CREATE TABLE #Masks (Mask VARCHAR(26));
INSERT INTO #Masks (Mask)
VALUES
('XX11602244YYYXXXXXXXXXXXXX'),
('XX11602244YYYYXXXXXXXXXXXX'),
('XX11602244YYYYXXXXXYYXXXXX'),
('XX11602244YYYYYXXXXXXXXXXX'),
('XX11602244YYYYYYXXXXXXXXXX'),
('XX11602244YYYYYYYXXXXXXXXX'),
('XX11602244YYYYYYYXXXXXXXYY');

-- 生成1到26的数字序列,用于遍历每个字符位置
WITH Numbers AS (
    SELECT 1 AS N
    UNION ALL
    SELECT N + 1 FROM Numbers WHERE N < 26
)
-- 处理每个掩码并生成目标字符串
SELECT 
    CONCAT(m.Mask, ' -> ', 
        (
            SELECT 
                CASE SUBSTRING(m.Mask, n.N, 1)
                    WHEN 'Y' THEN SUBSTRING(@Account, n.N, 1)
                    ELSE SUBSTRING(m.Mask, n.N, 1)
                END
            FROM Numbers n
            ORDER BY n.N
            FOR XML PATH(''), TYPE
        ).value('.', 'VARCHAR(26)')
    ) AS Result
FROM #Masks m;

DROP TABLE #Masks;

输出结果

执行上述代码后,将得到符合要求的输出:

XX11602244YYYXXXXXXXXXXXXX -> XX11602244515XXXXXXXXXXXXX
XX11602244YYYYXXXXXXXXXXXX -> XX116022445159XXXXXXXXXXXX
XX11602244YYYYXXXXXYYXXXXX -> XX11602244515XXXXXX93XXXXX
XX11602244YYYYYXXXXXXXXXXX -> XX1160224451598XXXXXXXXXXX
XX11602244YYYYYYXXXXXXXXXX -> XX11602244515983XXXXXXXXXX
XX11602244YYYYYYYXXXXXXXXX -> XX116022445159832XXXXXXXXX
XX11602244YYYYYYYXXXXXXXYY -> XX116022445159832XXXXXXX09

方案说明

  • 该方案通过生成数字序列遍历掩码的每一个字符位置,无需依赖PATINDEX,能处理Y出现在任意位置(除第3-10位,根据匹配规则此处无Y)的场景。
  • 逻辑简单直接,适配X与Y总数不超过18的限制,避免了通用方案不适配此场景的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:33:10