0

データベースにvarbinary列があります。これには、16 進数のデータの長い範囲のデータが含まれています。

substringデータを選択して表示するために使用します。

SELECT TOP 100
    CHAR_KEY AS charid,
    USER_KEY AS userid,
    CONVERT(VARCHAR,substring(char_data, 9, 16)) AS name,
    CONVERT(INT,cast(reverse(substring(char_data, 7, 2)) as BINARY(2))) AS level,
    CONVERT(INT,substring(char_data, 25, 1)) AS type,
    CONVERT(INT, substring(char_data, 261, 1)) AS permission,
    guild_data.guild_name
FROM CHAR_DATA0
    inner join guild_data 
    on guild_key = 
        CONVERT(INT, 
                cast(reverse(substring(char_data, 33, 4)) as BINARY(4)))
WHERE CONVERT(INT, substring(char_data, 261, 1))=0x00 
ORDER BY level DESC

今、私はしたいのですがUPDATE、何かアイデアはありますか? どうもありがとう。私はこれが初めてです。アップデートを探してみましたsubstringが、ネット上で実際に動作する例は見つかりませんでした。

ありがとう。

- - -編集 - - -

私はこれを試しました:

UPDATE
CHAR_TDATA0
SET char_data = stuff(cast(char_data as BINARY(2000)), 9, 16, CONVERT(BINARY(16), 'testnamezs'))
WHERE CHAR_KEY=4

しかし、運がありません。構文エラーが発生しました。

4

2 に答える 2

0

さまざまなデータに対してデータベース内の個別の列を使用するのではなく、この方法でデータを保存する理由を理解するのに苦労しています。

いずれにせよ、そのようにデータの一部を更新することはできないと思います。行のすべてのデータを選択し、変更する部分を更新してから、更新された16進ベースのデータの文字列全体を再挿入する必要があると思います。

何かのようなもの:

UPDATE
CHAR_TDATA0
SET char_data = "your already hex-encoded string of data here..."
WHERE CHAR_KEY=4
于 2012-07-23T14:43:58.170 に答える