我有一系列表,每个表都有一个专门的外语列。语言有日语,泰语,英语,意大利语,法语,共20多种。
所有这些表都使用Latin Case Insensitive排序规则进行设置。 DB工作正常。
但是现在我正在尝试查询每个表的特定外语列。让我们为初学者带上日语。我希望外语用户输入外国文本并根据外语栏找到记录。
DECLARE @myVar nvarchar(max);
SET @myVar = 'エンジン ストップ リレー' = 'Engine Stop Relay' in english
Select *
FROM tableJapanese
WHERE langString = @myVar;
我尝试过多种校对组合。我甚至复制了表并将列的排序规则更改为Japanese_CI_AI并尝试以这种方式查询。
当列为拉丁语或日语时,这些WHERE子句都不适用于table / columm collation;
WHERE lang_String collate Japanese_CI_AI = @myVar;
WHERE lang_String = @myVar collate Japanese_CI_AI;
WHERE lang_String collate Japanese_CI_AI = @myVar collate Japanese_CI_AI;
WHERE lang_String collate Japanese_CI_AI = @myVar;
WHERE lang_String = @myVar collate Japanese_CI_AI;
WHERE lang_String collate Japanese_CI_AI = @myVar collate Japanese_CI_AI;
我想将列/数据库保留为拉丁语排序规则,并在可能的情况下为每种语言编写查询代码。
这似乎是一个问题,如果是一条蛇,我已经被咬了。谁能看到我错过的东西?
MSSQL Express 2008 R2
解:
在字段前面添加N,它表示对SQL的unicode ...
Select *
FROM tblLangJAP_test
WHERE lang_String = N'エンジン ストップ リレー';
完美无瑕地工作。
谢谢,
答案 0 :(得分:1)
在字段前面添加N,它表示对SQL的unicode ... 选择 * 来自tblLangJAP_test 在哪里lang_String = N'エンジンストップリレー';
完美无瑕地工作。