3

私のSQLは非常に単純です。バージョン:SQL Server 2008

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

abcID=10であるabcからUrlNameを選択します。

私が得るものは

「LLLLL」

SELECT @@ languageに問い合わせたところ、「British」です。だから、それが文化の設定についてだとは思わないでください。

何かご意見は?

4

1 に答える 1

2

£そのコードページでサポートされている文字の1つではありません。

それらをすべて見るには、使用できます

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; 
于 2013-02-14T14:50:09.597 に答える