2017-08-19 4 views
-2

Quel est le code SQL Server correspondant pour ce faire? Cela a été écrit dans Access.Mettre à jour la requête dans SQL Server à l'aide du code d'accès

UPDATE TableDB SET accountcode = format(val(accountCode),'000.000'); 

La colonne "accountCode" est un format texte. Actuellement, certains sont xx.x, xxx, x.xxx, etc. Je veux que toutes les valeurs suivent le format xxx.xxx, avec des zéros dans les bons emplacements. Par exemple, 45,3 serait 045,300, 62,04 serait 062,040, etc

Merci

+0

Ajoutez le tag pour la version spécifique de SQL Server que vous utilisez. –

+0

Terminé - c'est SQL Server 2016 express – gamelanguage

+1

Qu'en est-il de cette instruction ne fonctionnera pas dans SQLServer? Est-ce que tu l'as essayé? Si la fonction Val est le problème, consultez https://stackoverflow.com/questions/14475799/do-we-have-any-equivalent-function-in-sql-server-for-val-function-of-ms-access – June7

Répondre

1

En supposant que toutes les accountcode valeurs adhèrent à votre échantillon format de données, vous devriez être en mesure de mettre à jour les valeurs avec cette requête:

WITH with_zero_padded AS (
    SELECT 
      accountcode 
     , '000' + accountcode + '000' AS zero_padded_accountcode 
    FROM dbo.TableDB 
) 
UPDATE with_zero_padded 
SET accountcode = LEFT(STUFF(zero_padded_accountcode, 1, CHARINDEX('.', zero_padded_accountcode)-4, ''), 7) 
FROM with_zero_padded; 
+0

Le format est spot-on, mais maintenant j'ai beaucoup de zéros, ce qui ne devrait pas être le cas. Je crois que les zéros sont pour quand la valeur est un nombre entier sans période. Par exemple, '100' renvoie NULL, ce que je ne veux pas, tandis que '100.1' renvoie '100.100', ce que je veux. Si je ne peux pas comprendre la solution de codage, je peux simplement utiliser Excel pour forcer un "." après les nombres entiers, exécutez ce code. – gamelanguage