1

我有一张包含内容的表格:

internalid  foreignWord
1   បរិស្ថាន
2   ការអភិវឌ្ឍសហគមន៍

及其架构:

CREATE TABLE [dbo].[CE_testTable](
    [internalid] [int] IDENTITY(1,1) NOT NULL,
    [foreignWord] [nvarchar](50) NOT NULL

如果我运行:

SELECT TOP 1000 [internalid]  ,[foreignWord] FROM CE_testTable where foreignWord = N'ការអភិវឌ្ឍសហគមន៍'

我得到:

internalid  foreignWord
1   បរិស្ថាន
2   ការអភិវឌ្ឍសហគមន៍

这是两行,它应该只返回带有“ការអភិវឌ្ឍសហគមន៍”的行,在柬埔寨语中是“社区发展”。

这是一个 NVARCHAR 列,我正在选择 N' 等?有任何想法吗?

4

3 回答 3

1

将排序规则更改为Latin1_General_100_CI_AS.

您可以在创建表时为每列指定排序规则。

如果您不指定排序规则,则列将具有与数据库相同的排序规则。

CREATE TABLE [dbo].[CE_testTable](
    [internalid] [int] IDENTITY(1,1) NOT NULL,
    [foreignWord] [nvarchar](50) collate Latin1_General_100_CI_AS NOT NULL
)

SQL小提琴

于 2013-11-22T09:22:02.990 回答
0

尝试不带 N 的查询

SELECT [internalid],
       [foreignWord] 
FROM CE_testTable 
WHERE foreignWord = 'ការអភិវឌ្ឍសហគមន៍'
于 2013-11-22T08:51:25.303 回答
0

我似乎 SQL Server 无法满足我的要求。

查看 Erland Sommarskog 的评论,这解释了我的情况。它存储正常,我可以看到那里的行。但比较可能会失败。他们做到了。所以这是一个设计级别的问题。我不能在桌子上有不同的排序规则,所以我无法比较。对我来说,这不是问题,只是 PK 出错了,我可以解决。

于 2013-11-22T09:47:42.147 回答