2010-10-05 18 views
15

Ho un database SQL Server 2005 in cui alcune tabelle contengono testo arabo. Il tipo di dati per questi campi è NVARCHAR(n).problema con la clausola WHERE corrispondente sulla stringa araba

Il testo arabo all'interno della tabella viene visualizzato correttamente e, quando si seleziona, vengono visualizzati correttamente.

Il problema è che la ricerca di testo in arabo risulta in 0 righe.

select * from table_name 
where name='arabic_text' 

Questo non recupera righe, dove c'è un nome con questo valore.

Potete indicarmi come scrivere la richiesta?

+4

credo che si deve utilizzare 'DOVE nome come N '[sostituire con il testo in arabo]'' –

+1

@OMG Pony Dovete fare come? –

+0

grazie funziona gooo –

risposta

25

Prova ad aggiungere N prima del testo, ad es.

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

grazie funziona goooooooooooooooooood –

+3

La necessità di prefisso un confronto di prova con "N" al di fuori delle virgolette singole è a causa del tipo di dati (NVARCHAR), durante la ricerca di caratteri non ASCII (che è il motivo per cui non noterebbe un problema alla ricerca di testo inglese: N sta per "Nazionalizzato", ma significa UTF (suppongo 8). –

+0

c'è un altro problema con sqldatareader quando la condizione nel comando sql è araba come questa seleziona * dagli utenti dove nam = N 'testo arabo' questo non recupera alcun dato anche se c'è un nome utente con questo valore arabo quindi qual è la soluzione –

1

select * from nome_tabella cui nome come N '% arabic_text%' funzionerà qui