2009-10-19 10 views

Répondre

9

Essayez ceci:

declare @data as varchar(8) 
set @data = '00072330' 
print cast(@data as decimal)/100 
3

Ce:

SELECT CAST('00072330' AS INT)/100.0 

... vous donnera:

723,300000

Le .0 est important, sinon SQL Server effectuera maths entiers.

+1

.0 est requis car vous avez casté en int; lancer en décimal ne l'exige pas –

+0

Oui, mais pourquoi ne pas être plus explicite lorsque vous lancez en décimal? Si vous savez que vous êtes limité à 8 caractères (deux décimales), je préférerais voir AS DECIMAL (8,2) plutôt que AS DECIMAL. YMMV. –

+0

Je pense que le point de la conversion est parce que la précision n'est pas cohérente. Mais vous faites un bon point sur la définition de la précision sur le casting/convertir. Je ne suis toujours pas à jour sur mes types de données SQL Server. –

Questions connexes