在这里显示的查询中,我需要保留以 开头code1
的列的数字部分T
并将其连接起来code2
以获取我想要的代码。
对于其他 RDBMS,我会使用正则表达式替换。
我想出了下面的解决方案。它是最优的吗?还有其他更好的解决方案吗?
SELECT
code1,
code2,
CONCAT(ISNULL(CAST(TRY_CAST(REPLACE(code1, 'T', '') AS int) AS nvarchar), code1), code2) AS concatenated_code
FROM
(VALUES
('T000001524','A001'),
('T000001530','A001'),
('S01','A001'),
('T000003705','A001'),
('T000000091','A001'),
('S09','A004'),
('T000000961','A002')
) customer (code1, code2)
我正在寻找的输出是
代码1 | 代码2 | 连接代码 |
---|---|---|
T000001524 | A001 | 1524 A001 |
T000001530 | A001 | 1530 A001 |
S01 | A001 | S01 A001 |
T000003705 | A001 | 3705 A001 |
T000000091 | A001 | 91 A001 |
S09 | A004 | S09 A004 |
T000000961 | A002 | 961 A002 |