2010-10-05 9 views
15

Tengo una base de datos de SQL Server 2005 en la que tengo algunas tablas que contienen texto en árabe. El tipo de datos para esos campos es NVARCHAR(n).problema con la coincidencia de la cláusula WHERE en cadena árabe

El texto en árabe dentro de la tabla aparece correctamente y, al seleccionarlo, aparece correctamente.

Este problema es que la búsqueda de texto en árabe da como resultado 0 filas.

select * from table_name 
where name='arabic_text' 

Esto no recupera filas, donde hay un nombre con este valor.

¿Me puede guiar por favor sobre cómo escribir la consulta?

+4

yo creo que tiene que usar 'WHERE nombre LIKE N '[reemplazar con el texto árabe]'' –

+1

@OMG Ponies ¿Tienes que hacer algo así? –

+0

gracias funciona bien –

Respuesta

25

Prueba agregar N antes del texto, p.

select * from table_name 
where name=N'arabic_text' 
+0

gracias funciona 0ooooooooooooooooood –

+3

La necesidad de anteponer una comparación de prueba con "N" fuera de las comillas simples es debido al tipo de datos (NVARCHAR), cuando se busca por caracteres que no son ASCII (razón por la cual no notaría un problema en la búsqueda de texto en inglés. La N significa "nacionalizada", pero significa UTF (8 supongo). –

+0

hay otro problema con sqldatareader cuando el comando condtion in sql es árabe como este select * from users donde nam = N 'árabe texto' esto no recupera ningún dato aunque haya un nombre de usuario con este valor árabe, entonces ¿cuál es la solución –

1

SELECT * FROM nombre_tabla donde nombre como N '% arabic_text%' funcionará aquí

Cuestiones relacionadas