Sql server 子字符串中的SQL Server更新
我在数据库中有一个Sql server 子字符串中的SQL Server更新,sql-server,Sql Server,我在数据库中有一个varbinary列。包含十六进制格式的长范围数据的 我使用子字符串来选择和显示数据 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 le
varbinary
列。包含十六进制格式的长范围数据的
我使用子字符串
来选择和显示数据
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
CHAR_TDATA0
SET char_data = stuff(cast(char_data as BINARY(2000)), 9, 16, CONVERT(BINARY(16), 'testnamezs'))
WHERE CHAR_KEY=4
但是没有运气。出现一些语法错误。我很难理解为什么要以这种方式保存数据,而不是在数据库中为不同的数据段使用单独的列 在任何情况下,我不认为你可以用这种方式更新部分数据。我认为您需要做的是为一行选择所有数据,更新您想要更改的部分,然后作为一个整体重新插入更新的十六进制数据字符串 比如:
UPDATE
CHAR_TDATA0
SET char_data = "your already hex-encoded string of data here..."
WHERE CHAR_KEY=4
尝试先将内容保存在SQL Server变量中,然后进行计算和更新。
希望这有帮助
DECLARE @lc_char_data as varchar(max)
SET @lc_char_data = stuff(cast(char_data as BINARY(2000)), 9, 16, CONVERT(BINARY(16), 'testnamezs'))
UPDATE
CHAR_TDATA0
SET char_data = @lc_char_data
WHERE CHAR_KEY=4
是的,你在第二阶段的想法是我最初的计划。我想知道还有没有别的办法。谢谢你。