Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Consulta Unicode con SQL Server

Estas en el tema de Consulta Unicode con SQL Server en el foro de SQL Server en Foros del Web. Hola, estoy tratando de hacer una consulta en una base de datos que esta en hebreo, cuando la hago con numeros o palabras como "teacher" ...
  #1 (permalink)  
Antiguo 09/10/2015, 17:00
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Consulta Unicode con SQL Server

Hola, estoy tratando de hacer una consulta en una base de datos que esta en hebreo, cuando la hago con numeros o palabras como "teacher" obtengo resultados, pero si busco con hebreo no obtengo nada.

Asi hago la consulta:

Código SQL:
Ver original
  1. SELECT CAST(Title AS NVARCHAR(900)) AS Title, SubTitle, Initiators, WinningTypeID,
  2. WinningType, RewardTypeID, RewardType, WinningYear, ShortDescription, Initiators, Description,
  3. Image1, Image2, Image3, Image4, InitiatorEmail, InitiativeID, InMemoryOF
  4. FROM ViewWebWinningInitiatives
  5. WHERE RewardTypeID = 1
  6.    AND WinningYear = '$_year'
  7.    AND WinningTypeID = '$_type'
  8.    AND Title LIKE N'%$_input%'


El problema esta en Title

Última edición por gnzsoloyo; 10/10/2015 a las 06:12
  #2 (permalink)  
Antiguo 12/10/2015, 03:32
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta Unicode con SQL Server

Supongo que las cadenas en Hebreo están en Title, y la columna es del tipo NVarchar.
¿Tengo razón?
Te pregunto porque en la clausula Select casteás la columna Title en NVarchar.
Se trata de SQL Server? Valores como '$..' son generalmente parámetros en otras herramientas.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 14/10/2015, 09:18
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: Consulta Unicode con SQL Server

Cita:
Iniciado por GeriReshef Ver Mensaje
Supongo que las cadenas en Hebreo están en Title, y la columna es del tipo NVarchar.
¿Tengo razón?
Te pregunto porque en la clausula Select casteás la columna Title en NVarchar.
Se trata de SQL Server? Valores como '$..' son generalmente parámetros en otras herramientas.
Si, es SQL Sever, Title esta en hebreo y '$..' son los datos que obtengo de $_POST, utilice el cast porque algunos títulos no los mostraba
  #4 (permalink)  
Antiguo 14/10/2015, 09:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta Unicode con SQL Server

Investiga sobre el uso de collation ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 14/10/2015, 09:42
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: Consulta Unicode con SQL Server

Cita:
Iniciado por Libras Ver Mensaje
Investiga sobre el uso de collation ;)
usando COLLATE seria algo asi?:

Código SQL:
Ver original
  1. SELECT CAST(Title AS NVARCHAR(900)) AS Title, SubTitle, Initiators, WinningTypeID, WinningType,
  2. RewardTypeID, RewardType, WinningYear, ShortDescription, Initiators, Description, Image1, Image2,
  3. Image3, Image4, InitiatorEmail, InitiativeID, InMemoryOF FROM ViewWebWinningInitiatives
  4. WHERE RewardTypeID = 1
  5. AND WinningYear = '$_year'
  6. AND WinningTypeID = '$_type'
  7. AND Title LIKE N'%$_input%'
  8. ORDER BY Title
  9. COLLATE utf8_unicode_ci
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
porque no obtengo nada

Última edición por gnzsoloyo; 14/10/2015 a las 10:22
  #6 (permalink)  
Antiguo 14/10/2015, 10:00
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta Unicode con SQL Server

pregunta, estas usando mysql o sql server??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 14/10/2015, 10:03
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: Consulta Unicode con SQL Server

Cita:
Iniciado por Libras Ver Mensaje
pregunta, estas usando mysql o sql server??
SQL Server
  #8 (permalink)  
Antiguo 14/10/2015, 10:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta Unicode con SQL Server

Cita:
Iniciado por portal47 Ver Mensaje
SQL Server
Pues pareces estar usando cosas que son propias de la sintaxis de MySQL, no de SQL Server...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 14/10/2015, 10:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta Unicode con SQL Server

el cambio de collation seria sobre la columna en cuestion no sobre el order by algo como esto:

Código SQL:
Ver original
  1. SELECT
  2. columnName COLLATE SQL_Latin1_General_CP1_CI_AS
  3. FROM tableName
  4.  
  5. SELECT
  6. CAST (columnName AS VARCHAR(100)) COLLATE SQL_Latin1_General_CP1_CI_AS
  7. FROM tableName
  8.  
  9. SELECT
  10. CONVERT (VARCHAR, columnName) COLLATE SQL_Latin1_General_CP1_CI_AS
  11. FROM tableName
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 14/10/2015, 11:01
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: Consulta Unicode con SQL Server

Cita:
Iniciado por Libras Ver Mensaje
el cambio de collation seria sobre la columna en cuestion no sobre el order by algo como esto:

Código SQL:
Ver original
  1. SELECT
  2. CAST (columnName AS VARCHAR(100)) COLLATE SQL_Latin1_General_CP1_CI_AS
  3. FROM tableName
intente el segundo, solo así pude mostrar los títulos pero al hacer el query con el LIKE de Title no obtengo nada
  #11 (permalink)  
Antiguo 14/10/2015, 11:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta Unicode con SQL Server

Código SQL:
Ver original
  1. SELECT * FROM(
  2. SELECT
  3. CAST (columnName AS VARCHAR(100)) COLLATE SQL_Latin1_General_CP1_CI_AS AS columna
  4. FROM tableName
  5. ) WHERE columna LIKE '%mibusqueda%'
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 14/10/2015, 11:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta Unicode con SQL Server

Postea la consulta que escribiste. Lo mas probable es que haya un error en el WHERE. Usualmente porque intentas aplicar el LIKE en la misma sentencia que crea el alias.
El modo es como te lo muestra Libras
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 14/10/2015, 11:08
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: Consulta Unicode con SQL Server

Código SQL:
Ver original
  1. SELECT CAST (Title AS NVARCHAR(200)) COLLATE SQL_Latin1_General_CP1_CI_AS Title, SubTitle, Initiators,
  2. WinningTypeID, WinningType, RewardTypeID, RewardType, WinningYear, ShortDescription, Initiators,
  3. Description, Image1, Image2, Image3, Image4, InitiatorEmail, InitiativeID, InMemoryOF
  4. FROM ViewWebWinningInitiatives
  5.     WHERE RewardTypeID = 1
  6.     AND WinningYear = '$_year'
  7.     AND WinningTypeID = '$_type'
  8.     AND Title LIKE '%$_input%'
  9.     ORDER BY Title

Cita:
Editado: Codigo de programacion no permitido en Foros de BBDD.
Leer las reglas del foro, por favor...
  #14 (permalink)  
Antiguo 14/10/2015, 11:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta Unicode con SQL Server

Como pòdrías inferir de lo que ya te comenté, no puedes usar el alias creado en el SELECT en el WHERE de la misma consulta que lo crea. Tienes que transformar la consulta en una subconsulta como tabla derivada.

Mira bien lo que te puso Libras...

Y no postees código de programación. Sólo SQL PURO. En los foros de Bases de Datos no se permite codigo de ningún lenguaje que no sea SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 14/10/2015, 11:43
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: Consulta Unicode con SQL Server

entonces seria algo asi?:
Código SQL:
Ver original
  1. SELECT * FROM(SELECT CAST (Title AS NVARCHAR(200)) COLLATE
  2. SQL_Latin1_General_CP1_CI_AS AS Title1 FROM ViewWebWinningInitiatives)
  3. WHERE Title1 LIKE '%$_input%'

Última edición por gnzsoloyo; 14/10/2015 a las 11:58
  #16 (permalink)  
Antiguo 14/10/2015, 11:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta Unicode con SQL Server

Sería... Aunque le falta el alias para la tabla derivada.
Código SQL:
Ver original
  1. SELECT *
  2. FROM (SELECT CAST (Title AS NVARCHAR(200)) COLLATE SQL_Latin1_General_CP1_CI_AS Title, SubTitle,
  3.       Initiators, WinningTypeID, WinningType, RewardTypeID, RewardType, WinningYear, ShortDescription,
  4.       Initiators, Description, Image1, Image2, Image3, Image4, InitiatorEmail, InitiativeID, InMemoryOF
  5.     FROM ViewWebWinningInitiatives
  6.     WHERE RewardTypeID = 1
  7.       AND WinningYear = '$_year'
  8.       AND WinningTypeID = '$_type') Tabla
  9. WHERE Title LIKE '%$_input%'
  10. ORDER BY Title
¿Lo probaste?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #17 (permalink)  
Antiguo 14/10/2015, 12:20
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: Consulta Unicode con SQL Server

Si, ya lo probé pero sigue sin mostrar nada, la base de datos no la puedo tocar, seria posible copiarla a otro servidor con mysql cada día y desde ahí hacer la consulta?
  #18 (permalink)  
Antiguo 14/10/2015, 12:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta Unicode con SQL Server

MySQL y SQL Server no tienen la misma sintaxis en muchas cosas.
La consulta que estás armando no funcionará en MySQL, se dispararían errores.

¿No puedes hacer una prueba manual, con valores reales, a ver qué es lo que la consulta pura devuelve?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #19 (permalink)  
Antiguo 14/10/2015, 12:34
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: Consulta Unicode con SQL Server

ya la hice algo asi:
Cita:
$_year = "2014";
$_type = "1";
$_input = "media";
pero no me devuelve nada solo cuando quito el $_input, los otros dos son int y el $_input es varchar y si lo paso a mysql podría hacer la consulta pero con la sintaxis correspondiente, no?

Tengo algo en local, para eso solo hace la conexion con odbc pero ahi todo el texto en hebreo aparece como "????" y si algun Title contiene algo en ingles si lo busca

Etiquetas: select, server, sql, unicode
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:35.