Na consulta mostrada aqui, preciso manter a parte numérica da coluna code1
quando ela começa com T
e concatená-la com code2
para obter o código que desejo.
Com outros RDBMS, eu teria usado substituição de regex.
Encontrei a solução abaixo. É a ideal? Existem soluções melhores?
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)
A saída que estou procurando é
código1 | código2 | código_concatenado |
---|---|---|
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 |