Sql server 为什么在SQL Server中更新字符“£”时会将其转换为“L”
我的sql非常简单。版本:SQL Server 2008 更新dbo.abc SET UrlName='L;(其中abcID=10) 从abc中选择UrlName,其中abcID=10 我得到的是 微光 我查询了SELECT@@语言,它是英国语言。所以不要认为这是关于文化背景 有什么想法吗?不是该代码页支持的字符之一 看看你能用的一切Sql server 为什么在SQL Server中更新字符“£”时会将其转换为“L”,sql-server,sql-server-2008,character-encoding,Sql Server,Sql Server 2008,Character Encoding,我的sql非常简单。版本:SQL Server 2008 更新dbo.abc SET UrlName='L;(其中abcID=10) 从abc中选择UrlName,其中abcID=10 我得到的是 微光 我查询了SELECT@@语言,它是英国语言。所以不要认为这是关于文化背景 有什么想法吗?不是该代码页支持的字符之一 看看你能用的一切 DECLARE @Collations TABLE ( code TINYINT PRIMARY KEY, Slovenian_CI_AS C
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
如果数据库排序规则仍为斯洛文尼亚字母CI_,您将选择哪个选项,因为您仍然需要向字符串文本添加N前缀,以避免它首先强制进入该代码页
UPDATE dbo.abc
SET UrlName = N'L££££'
WHERE abcID = 10;
UrlName是什么排序规则?什么数据类型?nvarchar vs VARCHARCALCOLLATION是斯洛文尼亚语,字段是varchar类型