在Latin表中查询外语字段的排序规则

时间:2012-07-26 19:14:04

标签: sql sql-server-2008-r2 collation

我有一系列表,每个表都有一个专门的外语列。语言有日语,泰语,英语,意大利语,法语,共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 collat​​ion;

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'エンジン ストップ リレー';

完美无瑕地工作。

谢谢,

1 个答案:

答案 0 :(得分:1)

在字段前面添加N,它表示对SQL的unicode ...   选择 *   来自tblLangJAP_test   在哪里lang_String = N'エンジンストップリレー';

完美无瑕地工作。