Sql server 东部字符集导致SQL Server 2012出现问题
我有一张目录:Sql server 东部字符集导致SQL Server 2012出现问题,sql-server,non-latin,Sql Server,Non Latin,我有一张目录: 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]
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'等的位置?有什么想法吗?尝试不带N的查询
SELECT [internalid],
[foreignWord]
FROM CE_testTable
WHERE foreignWord = 'ការអភិវឌ្ឍសហគមន៍'
尝试不带N的查询
SELECT [internalid],
[foreignWord]
FROM CE_testTable
WHERE foreignWord = 'ការអភិវឌ្ឍសហគមន៍'
将更改为Latin1\u General\u 100\u CI\u 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\u常规\u 100\u CI\u 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 Server无法满足我的要求
查看来自Erland Sommarskog的,这就解释了我的情况。它存储正常,我可以看到其中的行。但是比较可能失败。它们失败了。所以这是一个设计级别的问题。我不能对表进行不同的排序,所以我不能比较。对我来说,这不是一个问题,这只是一个出错的PK,我可以解决。我觉得SQL Server无法满足我的要求
查看来自Erland Sommarskog的,这就解释了我的情况。它存储正常,我可以看到其中的行。但是比较可能失败。它们失败了。所以这是一个设计级别的问题。我不能在表中使用不同的排序规则,所以我不能比较。对我来说,这不是一个问题,这只是一个出错的PK,我可以解决。Do这对你有用吗?我试过了,它根本不返回任何行。奇怪的是,你的查询没有为我返回任何行。如果没有N,它将返回正确的行。你的数据库排序规则是什么?SQL\u Latin1\u General\u CP1\u CI\u AS。这个数据库可能需要包含世界上任何语言的字符,而不仅仅是柬埔寨语。排序规则,正如我看到的字符字符存储在那里。肯定有其他东西。这对你有用吗?我试过了,它根本不返回任何行。奇怪的是,你的查询没有为我返回任何行。如果没有N,它将返回正确的行。你的数据库排序规则是什么?SQL\u Latin1\u General\u CP1\u CI\u AS。此数据库可能需要包含世界上任何语言的字符,而不是just柬埔寨语。排序规则,我可以看到存储在其中的字符。必须有其他内容。该表需要能够包含任何语言的字符。@bendecko
Latin1_General_100_CI_as
也可以。+1代表SQL Fiddle。很好!我的排序规则设置为“SQLCollation Latin1_General_100_CI_as”“但是在我的机器上它不工作<代码>从[CE_testTable]中选择前1000名[internalid],[foreignWord],其中foreignWord=N'បរិស្ថាន'提供了整个表。@Bendcko仅更改数据库的排序规则是不够的。您还需要重新创建已创建的任何表。将保留创建时获得的任何排序规则。该表需要能够包含来自任何语言的字符。@bendeckoLatin1\u General\u 100\u CI\u AS
也可以使用。+1表示SQL FIDLE。美好的我的排序规则设置为“SQLCollation Latin1\u General\u 100\u CI\u AS”,但在我的机器上它不工作<代码>从[CE_testTable]中选择前1000名[internalid],[foreignWord],其中foreignWord=N'បរិស្ថាន'提供了整个表。@Bendcko仅更改数据库的排序规则是不够的。您还需要重新创建已创建的任何表。他还说,在旧的排序规则(版本80)中也是如此。但是新版本(版本100)已经定义了必要的代码点。他还说旧版本(版本80)也是如此。但是新版本(版本100)定义了必要的代码点。