-- 创建包含多种编码格式的示例表
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;
|