Estou dividindo uma coluna com base nos dois pontos usando este código que funciona.
,CASE WHEN CHARINDEX (':', ref) > 0
THEN SUBSTRING(ref, 1, CHARINDEX(':', ref) -1)
ELSE NULL
END AS EndVal
O 'EndVal' é numérico e quando tem menos de 4 caracteres, preciso adicionar zeros à esquerda para
123 = 0123
1 = 0001
1234 = 1234
Eu sei que posso fazer isso usando a função RIGHT ou REPLICATE, mas não consigo entender como adicioná-lo ao meu código existente ou editá-lo para que ele faça os dois trabalhos?
Qualquer conselho sobre o código original também é muito apreciado. Tendo que fazer isso funcionar no SQL 2008, sim, eu quero atualizar, mas ...
Você pode usar RIGHT dentro de sua instrução CASE ou fora dela, dependendo se deseja manter o valor NULL quando ':' não for encontrado na string.
Dentro do CASO
CASO Externo
A diferença aqui é que os valores NULL da instrução CASE são substituídos por quatro zeros no exemplo Outside CASE, mas no exemplo Inside CASE eles permanecem NULL. Você pode ver os diferentes resultados neste db<>fiddle .