sql >> データベース >  >> RDS >> Sqlserver

VARCHAR として格納されている BINARY を BINARY に変換する

    結果は、文字列 "0003f80075177fe6" (VARCHAR value) はコード ポイントに変換され、これらのコード ポイントはバイナリ値として提供されます。おそらくASCII互換の照合を使用しているので、ASCIIコードポイントを取得することを意味します:0 は 48 (30 hex)、f は 102 (66 hex) などです。これは 30 30 30 33 66 38 30 30... を説明しています

    代わりに、文字列をバイトの 16 進数表現として解析します (00 03 f8 00 75 71 77 fe 66 )。 変換 16 進文字列を変換できる追加の「スタイル」パラメーターを受け入れます:

    SELECT CONVERT(BINARY(16), '0003f80075177fe6', 2)
    

    スタイル 2 は、16 進文字列をバイナリに変換します。 (スタイル 1 は、"0x" で始まる文字列に対して同じことを行いますが、ここではそうではありません。)

    (この場合のように) 16 バイト未満の場合、値の右側がゼロで埋められることに注意してください (0x0003F80075177FE6000000000000000 )。代わりに左パディングが必要な場合は、自分で行う必要があります:

    SELECT CONVERT(BINARY(16), RIGHT(REPLICATE('00', 16) + '0003f80075177fe6', 32), 2)
    

    最後に、バイナリ リテラルは、"0x" をプレフィックスとして付け、引用符を使用しないだけで、変換せずに指定できることに注意してください。 タイプ BINARY(8) の列を返します .このクエリには関係ありませんが、完全を期すためです。




    1. SpringBootアプリケーションのschema.sqlにDROPTABLEIFEXISTSを使用できません

    2. PDO/MySQLプリペアドステートメントを使用したパラメーターとしてのテーブル名

    3. MySQLアレイ:これは実行できますか?

    4. PostgreSQLの数値の前にプラス/マイナス記号を付ける