gpt4 book ai didi

sql-server - 为什么字符 '£' 在 SQL Server 中更新时将转换为 "L"

转载 作者:行者123 更新时间:2023-12-02 02:06:18 25 4
gpt4 key购买 nike

我的sql很简单。版本:SQL Server 2008

UPDATE dbo.abc SET UrlName = 'L££££' WHERE abcID = 10;

select UrlName from abc where abcID = 10;

我得到的是

“呜呜呜”

我查询了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;

关于sql-server - 为什么字符 '£' 在 SQL Server 中更新时将转换为 "L",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com