我的sql很简单。版本:SQL Server 2008
更新 dbo.abc SET UrlName = 'L££££' 其中 abcID = 10;
从 abc 中选择 UrlName,其中 abcID = 10;
我得到的是
“LLLL”
我查询了 SELECT @@language,它是“British”。所以不要认为这与文化设置有关。
有什么想法吗?
我的sql很简单。版本:SQL Server 2008
更新 dbo.abc SET UrlName = 'L££££' 其中 abcID = 10;
从 abc 中选择 UrlName,其中 abcID = 10;
我得到的是
“LLLL”
我查询了 SELECT @@language,它是“British”。所以不要认为这与文化设置有关。
有什么想法吗?
£
不是该代码页中支持的字符之一。
要查看它们,您可以使用
DECLARE @Collations TABLE
(
code TINYINT PRIMARY KEY,
Slovenian_CI_AS CHAR(1) COLLATE Slovenian_CI_AS
);
WITH E00(N) AS (SELECT 1 UNION ALL SELECT 1), --2
E02(N) AS (SELECT 1 FROM E00 a, E00 b), --4
E04(N) AS (SELECT 1 FROM E02 a, E02 b), --16
E08(N) AS (SELECT 1 FROM E04 a, E04 b) --256
INSERT INTO @Collations
(code)
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) - 1
FROM E08
UPDATE @Collations
SET Slovenian_CI_AS = CAST(code AS BINARY(1))
SELECT *
FROM @Collations
您将需要更改列排序规则或使用nvarchar
而不是varchar
.
如果您的数据库排序规则保留在您选择的任何选项,Slovenian_CI_AS
您仍然需要向N
字符串文字添加一个前缀,以避免它首先被强制到该代码页中。
UPDATE dbo.abc
SET UrlName = N'L££££'
WHERE abcID = 10;