entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Se puede ejecutar una consulta SQL con otra "collation"?

Hola a todos!

Tengo una base de datos en la que todas las tablas tienen la collation: utf8_general_ci
y quiero que una consulta SELECT se ejecute con la collation: utf8_spanish_ci

¿Es posible sin modificar las tablas? ¿Se puede con SQL estandar? ¿Como?

El proposito es hacer un buscador en varios idiomas. No es para producción.

Saludos!

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola @pedrourday,

la sitanxis para usar un collation distinto es así:

SELECT * FROM tabla
WHERE campo COLLATE utf8_spanish_ci = 'San Jose'

El gran problema que tiene esto es que al cambiar el collation, no se usan los índices, con todo lo que esto implica para grandes cantidades de datos o de consultas.

Una "solución" para buscar de forma eficiente en varios idiomas es tener columnas por idiomas con el collation correspondiente, y luego buscar en la columna correspondiente. Es una duplicación horrible de datos pero resuelve el problema.

Saludos cordiales!

1voto

pedrourday comentado

Hola @Leonardo-Tadei

Pregunté la misma pregunta en otro foro y me respondieron muy parecido. Solo que no mencionaron tu solución, de utilizar columnas por idioma. Pero como no es para producción y no utilizo indices de texto en mis consultas la sintaxis utilizando COLLATE es más que suficiente.
Selecciono la respuesta porque esa solución me parece muy original y no se me había ocurrido. Por ahora, voy a utilizar la COLLATE en las consultas SQL. Pero cuando sea necesario utilizare la solución de columnas por idioma.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta