0

CSV リストをテーブル内の nvarchar(max) レコードに変換する関数があります。キリル文字で機能していないことに気付きました。問題は、これをここで置き換えることです。

DECLARE @XML xml = N'<r><![CDATA[' + REPLACE(@List, ',', ']]></r><r><![CDATA[') + ']]></r>'

キリル文字で動作するように置換するにはどうすればよいですか? たとえば、「тест」。

@List は NVARCHAR(MAX) で、SQL Server 2012 を使用しています。

4

2 に答える 2

1

このN''表記法は、Unicode 文字列リテラルを宣言するために使用されます。N変数 NVARCHAR を定義すると、自動的に Unicode 対応になります (そのため、 for @variablesを追加で宣言する必要はありません (つまり、方法はありません)。これは文字列リテラルの一部です)。

ではキリル文字を取得するためSELECT N'тест'、変数 @List が割り当てられている場所とその値を確認する必要があります。

CSV パーサーが Unicode 文字をどのように処理するかはわかりませんが、問題の原因は

  • ファイルエンコーディングを処理しない
  • @List に割り当てる前に VARCHAR 列または変数に割り当てる
于 2012-09-17T09:01:01.630 に答える
1

@List変数を nvarchar として定義していますか? 置換は nvarchars で正常に機能します

declare @list nvarchar(50) = N'те,ст'
select @list
DECLARE @XML xml = N'<r><![CDATA[' + REPLACE(@List, ',', ']]></r><r><![CDATA[') + ']]></r>'
于 2012-09-17T08:42:44.773 に答える