2017-07-17 3 views
0

J'ai une table qui contient une colonne que j'ai besoin de mettre à jour si la longueur de cette valeur est égale à 1, la chose est que si cela est vrai j'ai besoin pour obtenir cette valeur et concaténer un 0 avant, par exemple:SQL Server: mettre à jour une colonne, concaténer char avec cette valeur de colonne

Si la valeur de la colonne est égale à "5", j'ai besoin de mettre à jour cette ligne à "05", je dois le faire pour toutes les lignes qui correspondent à ce critère.

J'ai essayé ceci:

UPDATE WS 
SET WS.used_brand=CONCAT('0',(Select WS.used_brand FROM WS)) WHERE LEN(WS.used_brand) = 1; 

Il ne fonctionne pas en raison de la sélection intérieure, comment puis-je résoudre ce problème ?.

Merci.

+0

Tag votre question avec la base de données que vous utilisez. En outre, fournissez des exemples de données et les résultats souhaités. –

Répondre

2

Je pense que cela fait ce que vous voulez:

UPDATE WS 
    SET WS.used_brand = CONCAT('0', WS.used_brand) 
    WHERE LEN(WS.used_brand) = 1; 

Remarque: De nombreuses bases de données supportent LPAD() ou une fonction similaire pour les valeurs de remplissage sur la gauche.

Dans SQL Server, vous écririez plus probable que ce que:

UPDATE WS 
    SET WS.used_brand = '0' + WS.used_brand 
    WHERE LEN(WS.used_brand) = 1; 
2

Vous n'avez pas besoin imbriqué SELECT déclaration - vous pouvez référencer la colonne comme ceci:

UPDATE WS 
SET WS.used_brand=CONCAT('0', WS.used_brand) 
WHERE LEN(WS.used_brand) = 1;