¿Por qué un molde anidado NO funciona en MySQL? (No usar SQL Server)CAST anidado no funciona
select cast(cast(myColumn as decimal(5,2)) as int) from myTable
¿Por qué un molde anidado NO funciona en MySQL? (No usar SQL Server)CAST anidado no funciona
select cast(cast(myColumn as decimal(5,2)) as int) from myTable
Según the manual:
CAST(expr AS type)
[...]
CONVERT(expr,type)
[...]El
type
puede ser uno de los siguientes valores:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL[(M[,D])]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
Así, sólo tienes que seguir el manual:
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
Esta consulta está trabajando en el concepto de reparto anidada.
fundido (suma (molde (Column_name int) + fundido (Column_name como int)) como BIGINT) como pago de nombre_tabla
¿Qué estás tratando de lograr? ¿Cuál es el propósito de transmitir como 'UNSIGNED', solo para interpretar los datos resultantes como un 'INT' firmado? ¿No tendrá esto el mismo efecto que hacer directamente 'CAST (myColumn AS INT)'? – eggyal
@eggyal: Cambié mi ejemplo.La pregunta surgió tratando de encontrar números enteros en un campo varchar e ignorando los números decimales como ese: 'select * from tab donde fundido (cast (myColumn como decimal (5,2)) como int) = cast (myColumn como decimal (5,2)) ' –
Para lograr eso, probablemente le resulte más fácil probar sus columnas contra [expresiones regulares] (http://dev.mysql.com/doc/refman/5.1/en/regexp.html) . Consulte [esta pregunta] (http://stackoverflow.com/questions/75704/how-do-i-check-to-see-if-a-value-is-an-integer-in-mysql) para obtener más información. – eggyal