我有一张内容表:
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'等等?有什么想法吗?
答案 0 :(得分:1)
将collation更改为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
)
答案 1 :(得分:0)
尝试不带N
的查询SELECT [internalid],
[foreignWord]
FROM CE_testTable
WHERE foreignWord = 'ការអភិវឌ្ឍសហគមន៍'
答案 2 :(得分:0)
我觉得SQL Server不能做我要求的事情。
看看Erland Sommarskog的comment,这解释了我的情况。它存储好,我可以看到那里的行。但比较可能会失败。他们做到了。所以它是一个设计水平的问题。我不能在桌子上有不同的排序,所以我无法比较。对我来说,这不是一个问题,它只是一个错误的PK,我可以解决。