Perché un cast nidificato NON funziona in MySQL? (Lo fa utilizzando SQL Server)Nested CAST non funziona
select cast(cast(myColumn as decimal(5,2)) as int) from myTable
Perché un cast nidificato NON funziona in MySQL? (Lo fa utilizzando SQL Server)Nested CAST non funziona
select cast(cast(myColumn as decimal(5,2)) as int) from myTable
Secondo the manual:
CAST(expr AS type)
[...]
CONVERT(expr,type)
[...]Il
type
può essere uno dei seguenti valori:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL[(M[,D])]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
Quindi, basta seguire il manuale:
SELECT CAST(CAST(myColumn AS DECIMAL(5,2)) AS SIGNED) FROM myTable
o
SELECT CAST(CAST(myColumn AS DECIMAL(5,2)) AS UNSIGNED) FROM myTable
Questa query sta lavorando sul concetto del cast nidificato.
cast (sum (cast (Column_name int) + cast (Column_name come int)) come bigint) in pagamento dal table_name
Cosa stai cercando di realizzare? Qual è lo scopo del casting come 'UNSIGNED', solo allora per interpretare i dati risultanti come un' INT' firmato? Questo non ha lo stesso effetto di fare direttamente 'CAST (myColumn AS INT)'? – eggyal
@eggyal: Ho cambiato il mio esempio.La domanda è venuta cercando di trovare numeri interi in un campo varchar e ignorando i numeri decimali come quello: 'select * dalla scheda where cast (cast (myColumn as decimal (5,2)) as int) = cast (myColumn come decimale (5,2)) ' –
Per riuscirci, probabilmente troverai più facile testare le tue colonne contro [espressioni regolari] (http://dev.mysql.com/doc/refman/5.1/en/regexp.html) . Vedi [questa domanda] (http://stackoverflow.com/questions/75704/how-do-i-check-to-see-if-a-value-is-an-integer-in-mysql) per maggiori informazioni. – eggyal