-1

我需要插入一些夏威夷语 'Okina 字符串名称为 'Kapi'olani';但是在 SQL Server 2017 数据库中,它显示为Kapi?olani带有问号。

我做了一些研究并尝试了这篇文章的解决方案

CREATE TABLE Organization3 (Name NVARCHAR(250) COLLATE Japanese_XJIS_140_BIN2); 

插入值后:

INSERT INTO Organization3 
      ([Name])
      values
      ('Kapi''olani')
update unicas_config.dbo.Organization3  set Name = 'Kapiʻolani'

它仍然显示如下:(Kapi?olani带问号)。

有什么解决方案可以让它正确显示吗?非常感谢

4

1 回答 1

1

您应该使用 N 前缀(即N'Kapiʻolani')来指定它是一个 Unicode 字符串(正如评论中已经指出的那样)。

排序规则仅对排序和比较(以及执行比较以执行其任务的字符串相关函数)很重要。

例如,以下 SELECT-s 返回不同的结果:

CREATE TABLE #t (x NVARCHAR(100))
INSERT INTO #t VALUES (N'Kapiʻolani'),(N'KAPIʻOLANI'),(N'Kapi''olani'),(N'Kapiolani'),(N'Kapi olani')

SELECT DENSE_RANK() OVER (ORDER BY x COLLATE Latin1_General_100_CI_AI), * FROM #t ORDER BY 1
SELECT DENSE_RANK() OVER (ORDER BY x COLLATE Latin1_General_100_CI_AS), * FROM #t ORDER BY 1
SELECT DENSE_RANK() OVER (ORDER BY x COLLATE Latin1_General_100_CS_AI), * FROM #t ORDER BY 1
SELECT DENSE_RANK() OVER (ORDER BY x COLLATE Latin1_General_100_CS_AS), * FROM #t ORDER BY 1
SELECT DENSE_RANK() OVER (ORDER BY x COLLATE Latin1_General_100_BIN), * FROM #t ORDER BY 1

DROP TABLE #t

使用返回您期望的数据的排序规则。

于 2021-06-27T11:48:43.027 回答