LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 89|回复: 0

sql-server从长编码中如何获取指定数据

[复制链接]
发表于 2025-8-5 14:25:33 | 显示全部楼层 |阅读模式
-- 创建包含多种编码格式的示例表
CREATE TABLE MixedCodes (
    id INT IDENTITY(1,1) PRIMARY KEY,
    code_type VARCHAR(20) NOT NULL, -- 编码类型
    full_code VARCHAR(50) NOT NULL  -- 完整编码
);

-- 插入测试数据:包含两种典型格式
INSERT INTO MixedCodes (code_type, full_code)
VALUES
    -- 格式1:右侧有固定长度的序号(适合RIGHT函数)
    ('类型A', 'PROD-ELEC-2025-00123'),
    ('类型A', 'PROD-CLOTH-2025-00456'),
    -- 格式2:中间有间隔的关键字符(适合SUBSTRING函数)
    ('类型B', 'AB12CD34EF56'),
    ('类型B', 'XY78ZA90BC12');

-- 对比两种提取方法
SELECT
    code_type,
    full_code AS 原始编码,
    -- 方法1:RIGHT函数提取右侧固定长度(适合类型A)
    CASE WHEN code_type = '类型A'
         THEN RIGHT(full_code, 5)
         ELSE '不适用'
    END AS RIGHT提取结果,
    -- 方法2:SUBSTRING提取多个间隔字符(适合类型B)
    CASE WHEN code_type = '类型B'
         THEN CONCAT(
             SUBSTRING(full_code, 3, 1),  -- 第3位
             SUBSTRING(full_code, 4, 1),  -- 第4位
             SUBSTRING(full_code, 7, 1),  -- 第7位
             SUBSTRING(full_code, 8, 1)   -- 第8位
         )
         ELSE '不适用'
    END AS SUBSTRING提取结果
FROM MixedCodes;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表