Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 Pete
Pete

T-Sql elimina punctul zecimal din tipul de date de bani

Având în vedere constrângerea folosirii T-Sql numai în Sql Server 2005, există o modalitate mai bună de a elimina zecimale dintr-un tip de bani decât o conversie la un varchar (aici implicit) și apoi o înlocuire a punctului zecimal?

Iată ce am în prezent.

SELECT REPLACE(1.23, '.', ''), REPLACE(19.99, '.', '')

Ceea ce readuce dorințele 123 și 1999, dar mă întrebam dacă există o cale mai bună. Orice gânduri?

9 2008-08-06T19:34:47+00:00 4
Programare
sql-server-2005
sql-server
tsql
Comentarii la întrebare (0)
Yaakov Ellis
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#3897

Multiplicați cu 100 și apoi convertiți la un int.

0
0
Comentarii (0)
Curt Hagenlocher
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#3899

Ați putea fi ceva mai specific cu privire la cazul de utilizare? Eliminarea punctului zecimal din reprezentare este puțin neobișnuită, dat fiind că veți pierde toate informațiile despre scală. Presupunem că vor exista întotdeauna două cifre? Dacă da, puteți simplifica multiplicarea cu 100 și apoi rotunjirea înainte de a trece la un șir.

0
0
Comentarii (0)
Lance Fisher
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#3974

Rețineți că tipul de date de bani poate avea până la 4 cifre dincolo de zecimale. Valorile cu mai mult de două cifre ar putea să nu funcționeze conform așteptărilor pentru soluția originală sau pentru trucul x100.

0
0
Comentarii (0)
SQLMenace
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#5944

Niciodată nu ar trebui să utilizați tipul dat de bani pentru a stoca valorile monetare. Dacă faceți orice calcule, veți obține rezultate trunchiate. Rulați următoarele pentru a vedea ce vreau să spun

DECLARE
@mon1 MONEY,
@mon2 MONEY,
@mon3 MONEY,
@mon4 MONEY,
@num1 DECIMAL(19,4),
@num2 DECIMAL(19,4),
@num3 DECIMAL(19,4),
@num4 DECIMAL(19,4)

SELECT
@mon1 = 100, @mon2 = 339, @mon3 = 10000,
@num1 = 100, @num2 = 339, @num3 = 10000

SET @mon4 = @mon1/@mon2*@mon3
SET @num4 = @num1/@num2*@num3

SELECT @mon4 AS moneyresult,
@num4 AS numericresult

ieşire: 2949.0000 2949.8525

0
0
Comentarii (0)
Utilizator anonim
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#886375

Aici este magia:

DataFormatString="{0:c0}

Aceasta va elimina zecimalele.

0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire