东部字符集导致SQL Server 2012出现问题



我有一个包含内容的表:

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等?有什么想法吗?

将排序规则更改为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 Fiddle

尝试不带N 的查询

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

我觉得SQL Server不能满足我的要求。

看看Erland Sommarskog的评论,这就解释了我的处境。它的存储还可以,我可以看到里面的行。但比较可能会失败。他们做到了。所以这是一个设计层面的问题。我不能在桌子上有不同的排序规则,所以我不能比较。对我来说,这不是问题,只是PK出错,我可以解决。

相关内容

  • 没有找到相关文章