Je travaille sur une requête SQL qui lit à partir d'une base de données SQLServer pour produire un fichier d'extrait. L'une des conditions requises pour supprimer les zéros non significatifs d'un champ particulier, qui est un VARCHAR(10)
champ simple . Ainsi, par exemple, si le champ contient «00001A», l'instruction SELECT doit renvoyer les données sous la forme «1A».
Existe-t-il un moyen en SQL de supprimer facilement les zéros non significatifs de cette manière? Je sais qu'il existe une RTRIM
fonction, mais cela ne semble supprimer que des espaces.
sql
sql-server
tsql
Tim C
la source
la source
Réponses:
la source
la source
les retours
N0Z
, c'est-à-dire se débarrasser des zéros non significatifs et de tout ce qui les précède.la source
J'avais le même besoin et j'ai utilisé ceci:
la source
Si vous souhaitez que la requête renvoie un 0 au lieu d'une chaîne de zéros ou de toute autre valeur, vous pouvez le transformer en une instruction case comme celle-ci:
la source
Vous pouvez utiliser ceci:
la source
Vous pouvez essayer ceci - il prend un soin particulier de ne supprimer que les zéros non significatifs si nécessaire:
Ou vous pouvez simplement appeler
la source
Voici la fonction de valeur scalaire SQL qui supprime les zéros non significatifs de la chaîne:
la source
Au cas où vous souhaiteriez supprimer les zéros non significatifs d'une chaîne de taille inconnue.
Vous pouvez envisager d'utiliser la commande STUFF.
Voici un exemple de la façon dont cela fonctionnerait.
Voir dans Fiddler divers scénarios qu'il couvrira
https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=14c2dca84aa28f2a7a1fac59c9412d48
la source
Supprimer le 0 de début du mois suivant la déclaration fonctionnera certainement.
Remplacez simplement
GETDATE()
par le champ de date de votre table.la source
tu peux essayer ça
SELECT REPLACE(columnname,'0','') FROM table
la source
Pour supprimer le premier 0, vous pouvez multiplier la colonne numérique par 1 Par exemple: Sélectionnez (ColumnName * 1)
la source
Il s'agit d'un script Sql qui émule la fonctionnalité de la commande TRIM dans tsql avant 2017, c'est fondamentalement le même que les autres recommandations, mais les autres remplacent par un seul caractère inhabituel qui peut encore se produire, «[Rtrim]» ou «[ Ltrim] 'pouvait toujours apparaître dans le texte, mais remplacer hat par un texte unique, par exemple un Guid, résoudrait ce problème.
je ne l'ai pas testé concernant la vitesse
la source
J'ai emprunté aux idées ci-dessus. Ce n'est ni rapide ni élégant. mais c'est exact.
CAS
FIN
la source
la source
Cela devrait faire l'affaire.
la source
select trim(leading '0' from '001A');
, mais OP demandait SQL Server.