Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么在SQL Server中更新字符“£”时会将其转换为“L”_Sql Server_Sql Server 2008_Character Encoding - Fatal编程技术网

Sql server 为什么在SQL Server中更新字符“£”时会将其转换为“L”

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

我的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 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类型