我的sql非常简单。版本:SQL Server 2008
UPDATE dbo.abc SET UrlName ='L£''WHERE abcID = 10;
从abc中选择UrlName,其中abcID = 10;
我得到的是
“LLLLL”
我查询SELECT @@语言,它是“英国人”。所以不要以为它是关于文化背景的。
有什么想法吗?
答案 0 :(得分:2)
£
不是该代码页中支持的字符之一。
要查看它们,您可以使用
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;