我有一个包含内容的表:
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出错,我可以解决。