2010-10-05 70 views
15

我有一個SQL Server 2005數據庫,其中有一些表包含阿拉伯文本。這些字段的數據類型爲NVARCHAR(n)WHERE子句匹配阿拉伯字符串的問題

表格中的阿拉伯文字顯示正確,選擇時,它們顯示正確。

問題是搜索阿拉伯文本結果爲0行。

select * from table_name 
where name='arabic_text' 

這不會檢索任何行,其中存在具有此值的名稱。

你能指導我如何編寫查詢嗎?

+4

我相信你有使用'WHERE名稱LIKE N '[用阿拉伯文字替換]'' – 2010-10-05 22:22:48

+1

@OMG小馬你必須這樣做嗎? – 2010-10-05 22:24:16

+0

謝謝你的作品goood – 2010-10-05 22:28:34

回答

25

嘗試在文本前添加N,例如

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

謝謝你的作品goooooooooooooooooood – 2010-10-05 22:26:42

+3

需要在單引號之外加上「N」作爲測試比較的前綴是因爲數據類型(NVARCHAR),當用非ASCII字符搜索時(這就是爲什麼你不會注意到搜索英文文本的問題,N表示「國家化」,但意味着UTF(8我認爲) – 2010-10-05 23:07:40

+0

當sql命令中的condtion是阿拉伯語時,sqldatareader還有其他問題,如下所示select * from users其中nam = N'阿拉伯語文本'這不會檢索任何數據,雖然有一個用戶名與這個阿拉伯值,所以什麼是解決方案 – 2010-10-05 23:14:33

1

SELECT * FROM table_name的 其中類似N '%arabic_text%' 的名字將在這裏工作