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

varbinary(MAX) 列を更新する

    設定している値全体が奇数であるため、余分な 0 が追加されています。 SQL Server は、偶数になるように余分な 0 を埋め込んでいます。

    declare @varmax varbinary(max) 
    set @varmax = 0x1234567         --odd
    select @varmax                  --returns 0x01234567 with the padded 0
    
    set @varmax = 0x12345678        --even
    select @varmax                  --returns 0x12345678
    

    最大値を満たす奇数のバイト数を入力しているため、9 はドロップされています。したがって、0が挿入されますが、これは最大バイト数をオーバーフローするため、切り捨てられているようです。私はあなたのエラーを再現することができました...しかし、それを回避する方法はまだわかりません.

    テストに使用した値は次のとおりです。結果は無視してください...ただし、それらを独自の SSMS にコピーして、正しい出力を確認できます。

    http://rextester.com/LMGQ8686




    1. データベース設計に関する質問 - カテゴリ/サブカテゴリ

    2. テーブルの作成 - SQL エラー:ORA-00905:キーワードがありません

    3. OracleのSQL*PlusにおけるMySQLの\Gに相当

    4. Oracle SQLエスケープ文字(「&」の場合)