Como faço para remover o último caractere em uma string T-SQL
?
Por exemplo:
'TEST STRING'
para retornar:
'TEST STRIN'
sql
sql-server
tsql
Daveed
fonte
fonte
Se, por algum motivo, a lógica da sua coluna for complexa (caso em que ... então ... else ... end), as soluções acima farão com que você precise repetir a mesma lógica na função len (). Duplicar a mesma lógica se torna uma bagunça. Se for esse o caso, é uma solução digna de nota. Este exemplo se livra da última vírgula indesejada. Finalmente encontrei um uso para a função REVERSE.
fonte
NULL
se for passada uma string menor que o intervalo de exclusão especificado paraSTUFF
. Envolva-o emISNULL
para obter um valor de saída diferente para o caso de string vazio.select reverse(stuff(reverse('a,b,c,d,'), 2, 1, ''))
Tente o seguinte:
fonte
select substring('test string', 0, len('test string'))
?SUBSTRING ( expression ,start , length )
. Agora, as duas consultas retornam o mesmo porque a numeração é baseada em 1, o que significa que o primeiro caractere na expressão é 1. Se o início for menor que 1, a expressão retornada começará no primeiro caractere especificado na expressão. FonteSe sua string estiver vazia,
esse código causará a mensagem de erro 'Parâmetro de comprimento inválido passado para a função de substring'.
Você pode lidar com isso desta maneira:
Ele sempre retornará resultado e NULL no caso de sequência vazia.
fonte
fonte
Isso funcionará mesmo quando o texto de origem / var for nulo ou vazio:
fonte
Se sua cor é
text
e nãovarchar
, você pode usar o seguinte:fonte
Se você quiser fazer isso em duas etapas, em vez das três de REVERSE-STUFF-REVERSE, poderá separar sua lista em um ou dois espaços. Em seguida, use RTRIM para aparar os espaços finais e REPLACE para substituir os espaços duplos por ','
No entanto, isso não é uma boa ideia se a string original puder conter espaços internos.
Não tenho certeza sobre o desempenho. Cada REVERSE cria uma nova cópia da string, mas STUFF é um terço mais rápido que REPLACE.
veja também isso
fonte
fonte
Eu posso sugerir isso -hack-;).
Demonstração do SQL Server Fiddle
fonte
você pode criar função
fonte
Tente isto
fonte
Obter o último caractere
fonte
Minha resposta é semelhante à resposta aceita, mas também verifica se há Null e Empty String.
fonte
É bastante tarde, mas curiosamente ainda não foi mencionado.
ou seja:
fonte
Adoro a resposta de @ bill-hoenig; no entanto, eu estava usando uma subconsulta e fui pego porque a função REVERSE precisava de dois conjuntos de parênteses. Levei um tempo para descobrir isso!
fonte
Para atualizar o registro aparando os últimos N caracteres de uma coluna específica:
fonte
Tente :
fonte
resultado:
fonte
Tente isso,
E a saída será como, THAMIZHMANI
fonte
fonte