4

Char(0)文字列に埋め込まれたヌル文字を16進コードに置き換えるSQLServerT-SQLの構造とは何ですか?

つまり

 REPLACE('t'+Char(0)+'t', Char(0), REPLACE(master.dbo.fn_varbintohexstr(0), '000000', ''))

戻らない't0x00t'、どうする?(これはすでに1から31まで機能します。)

この質問には、問題が照合であると説明する回答があります。

この回答は、master.dbo.fn_varbintohexstr(0)を返し0x00000000ます。

Replace内部を手動で単純化すると、上記の質問への回答のように、句'0x00'を追加するだけで機能しましたが、完全な式で機能するバージョンが見つかりません(すべてのnに使用できます) Collate、0から31、9、10、13をスキップ)。

4

1 に答える 1

2

あなたが欲しいのはこれかもしれません。

SELECT REPLACE('t'+Char(0)+'t', Char(0), CONVERT(VARCHAR(10),REPLACE(master.dbo.fn_varbintohexstr(0), '000000', '')))

明示的にVARCHARに変換する必要があります

完全な式が必要な場合は、内部置換を削除します

SELECT REPLACE('t'+Char(0)+'t', Char(0), CONVERT(VARCHAR(10),master.dbo.fn_varbintohexstr(0)))
于 2012-06-10T05:31:51.650 に答える