1

我有一系列表格,每个表格都有专门的外语列。语言有日语、泰语、英语、意大利语、法语等20多种。

所有这些表都使用拉丁文不区分大小写排序规则设置。数据库工作正常。

但现在我正在尝试查询每个表的特定外语列。让我们以日语作为初学者。我希望外语用户输入外文并根据外语栏查找记录。

  DECLARE @myVar nvarchar(max);

  SET @myVar =  'エンジン ストップ リレー'      = 'Engine Stop Relay' in english

  Select *
  FROM tableJapanese
  WHERE langString = @myVar;

我尝试了多种排序规则组合。我什至复制了表格并将列的排序规则更改为 Japanese_CI_AI 并尝试以这种方式查询它。

当列是拉丁文或日文时,这些 WHERE 子句均不适用于表/列排序规则...

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 速成版 2008 R2

解决方案

字段前加N,表示unicode to SQL...

  Select *
  FROM tblLangJAP_test
  WHERE lang_String = N'エンジン ストップ リレー';

完美运行。

谢谢,

4

1 回答 1

2

字段前加N,表示unicode to SQL... Select * FROM tblLangJAP_test WHERE lang_String = N'エンジン ストップ リレー';

完美运行。

于 2012-09-04T12:50:45.963 回答