2

私は SQL Server 2008 R2 dev を使用しています。サーバーの既定の照合順序は Cyrillic_General_CI_AS です。

SSMS
SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CS_AS
または

SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI   

出力

  • eEaAaAeEc?a on(in ocntext of/use dbName) データベースのデフォルトの照合 Cyrillic_General_CI_AS
  • éÉââààÀëËçæà データベースでのデフォルト照合 Latin1_General_CI_AS

なんで?

4

2 に答える 2

6

クエリ内のこれらの文字リテラルは、最初にデータベースで設定されている照合の下で varchar 文字列に変換され、次に照合キャストが有効になります。

このような文字リテラルを渡し、すべての文字が忠実に表現されるようにする場合は、nvarchar リテラルとして渡すことをお勧めします。

create database CollTest collate Cyrillic_General_CI_AS
go
use CollTest
go
SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CS_AS   
SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI
go
SELECT N'éÉâÂàÀëËçæà' COLLATE Latin1_General_CS_AS   
SELECT N'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI
go

出力:

-----------
eEaAaAeEc?a

(1 row(s) affected)


-----------
eEaAaAeEc?a

(1 row(s) affected)


-----------
éÉâÂàÀëËçæà

(1 row(s) affected)


-----------
éÉâÂàÀëËçæà

(1 row(s) affected)
于 2010-11-18T08:31:49.880 に答える
1

この指標表によると、キリル文字æ_General_CI_ASには文字が含まれていません。?これは、selectステートメントにあるものではなく、本当にデフォルトを使用している場合に、その場所にが表示される理由を説明します。

于 2010-11-18T05:28:58.647 に答える