Estou tentando cortar tudo depois de um determinado caractere (neste caso '&') e se não houver ocorrência desse caractere, pegue a string inteira.
select left(@str,isnull(nullif(charindex('&',@str) - 1,-1),len(@str)))
Esta parece ser uma maneira desnecessariamente complicada de fazê-lo. Existe uma maneira melhor/mais curta?
Aqui está um caso de teste completo para indicar o que estou fazendo ...
declare @str as varchar(255)
set @str = 'abc&def&ghi'
select left(@str,isnull(nullif(charindex('&',@str) - 1,-1),len(@str)))
-- Returns 'abc'
set @str = 'abc'
select left(@str,isnull(nullif(charindex('&',@str) - 1,-1),len(@str)))
-- Returns 'abc'
Bem - aqui está 'outra' maneira ...
OU - você pode simplesmente SEMPRE concatenar '&' no final da string assim: