2011-07-08 17 views
6

¿Cómo se puede hacer que mysql comprenda los puntos decimales no ingleses en campos enteros/float?Insertar puntos decimales no ingleses en mysql

setLocale(LC_ALL, 'da_DK.ISO-8859-1'); 

por ejemplo:

0,25 will be inserted as 0 
0.25 will be inserted as 0.25 
+1

'¿Por qué 0,25' insertar como cero? SQL tenía un tipo de datos DECIMAL, por lo que esperaba que el valor se almacenara como '0.25' –

+1

Supongo que el analizador no puede manejarlo y está interrumpiendo la coma. – Tremmors

Respuesta

13

Una de las razones por las que no puede hacer eso es que la coma , se usa para separar los valores de campo en las declaraciones INSERT.

INSERT INTO a(b,c) VALUES (3,4,5) sería ambiguo.

¿Debería resultar en b=3.4 , c=5 o b=3 , c=4.5?

+1

Buen pensamiento. Nunca pensé en * why * locales no son compatibles con los formatos de número ... – gbn

+0

buena respuesta. Nunca entenderé QUIEN designó la coma dolorosa como un separador de cosas cuando hay al menos [4 separadores en ASCII] (https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text) –

+0

@IvanFerrerVilla que no son imprimibles personajes, destinados a ser utilizados en archivos. SQL es un lenguaje legible. –

2

Los números no se ven afectados por la configuración regional (lo mismo en SQL Server también).

por lo que tendría que enviar como "0,25"

0

La forma más fácil yo creo que sería el uso de un contenedor para el objeto de MySQL que establecer la configuración regional a en_US.utf8 antes y después de la consulta consulta lo devuelve a da_DK.ISO-8859-1.

Parece que this hace lo contrario de lo que está buscando.

-3

Es posible que desee intentar algo así como SUSTITUIR ('3,1415926', '', '')

+0

Esto solo funcionaría si tiene _exactly_ '3,1415926' como una cadena en alguna parte y tendría que realizar esto para cada ocurrencia que desea cambiar. Poco útil en mi opinión. – Werner

+0

Esta no es una solución de pregunta formulada. por favor lea la pregunta nuevamente cuidadosamente –

Cuestiones relacionadas