Comment supprimer le dernier caractère d'une chaîne dans T-SQL
?
Par exemple:
'TEST STRING'
rendre:
'TEST STRIN'
sql
sql-server
tsql
Daveed
la source
la source
Si pour une raison quelconque votre logique de colonne est complexe (cas où ... alors ... sinon ... fin), alors les solutions ci-dessus vous obligent à répéter la même logique dans la fonction len (). Dupliquer la même logique devient un gâchis. Si tel est le cas, il s'agit d'une solution à noter. Cet exemple supprime la dernière virgule indésirable. J'ai finalement trouvé une utilisation pour la fonction REVERSE.
la source
NULL
s'il est passé une chaîne qui est plus courte que la plage de suppression spécifiée pourSTUFF
. Enveloppez-le dans unISNULL
pour obtenir une valeur de sortie différente pour la casse de chaîne vide.select reverse(stuff(reverse('a,b,c,d,'), 2, 1, ''))
Essaye ça:
la source
select substring('test string', 0, len('test string'))
?SUBSTRING ( expression ,start , length )
. Désormais, les deux requêtes renvoient la même chose car la numérotation est basée sur 1, ce qui signifie que le premier caractère de l'expression est 1. Si start est inférieur à 1, l'expression renvoyée commencera au premier caractère spécifié dans expression. SourceSi votre chaîne est vide,
alors ce code provoquera le message d'erreur «Paramètre de longueur non valide passé à la fonction de sous-chaîne».
Vous pouvez le gérer de cette façon:
Il retournera toujours résultat, et NULL en cas de chaîne vide.
la source
la source
Cela fonctionnera même lorsque le texte source / var est nul ou vide:
la source
Si votre colonne est
text
et nonvarchar
, vous pouvez utiliser ceci:la source
Si vous voulez faire cela en deux étapes, plutôt que les trois de REVERSE-STUFF-REVERSE, vous pouvez avoir votre séparateur de liste d'un ou deux espaces. Ensuite, utilisez RTRIM pour couper les espaces de fin et REMPLACER pour remplacer les doubles espaces par ','
Cependant, ce n'est pas une bonne idée si votre chaîne d'origine peut contenir des espaces internes.
Pas sûr de la performance. Chaque REVERSE crée une nouvelle copie de la chaîne, mais STUFF est un tiers plus rapide que REPLACE.
voir aussi ça
la source
la source
Je peux suggérer ceci -hack-;).
Démonstration de SQL Server Fiddle
la source
vous pouvez créer une fonction
la source
Essaye ça
la source
Obtenez le dernier personnage
la source
Ma réponse est similaire à la réponse acceptée, mais elle vérifie également les chaînes Null et Empty.
la source
C'est assez tard, mais curieusement jamais mentionné.
c'est à dire:
la source
J'adore la réponse de @ bill-hoenig; cependant, j'utilisais une sous-requête et j'ai été rattrapé parce que la fonction REVERSE avait besoin de deux ensembles de parenthèses. Il m'a fallu du temps pour comprendre celui-là!
la source
Pour mettre à jour l'enregistrement en coupant les N derniers caractères d'une colonne particulière:
la source
Essayez-le:
la source
production:
la source
Essaye ça,
Et la sortie sera comme, THAMIZHMANI
la source
la source