我有varbinary值,我想提取第0字节的前3位和 值是0x4D79205465737420537472696E67。SQL Server:如何从二进制或varbinary值字节中提取特定位
谢谢你,
我有varbinary值,我想提取第0字节的前3位和 值是0x4D79205465737420537472696E67。SQL Server:如何从二进制或varbinary值字节中提取特定位
谢谢你,
这从varbinary
值的第一个字节中提取的3位:
select CONVERT(tinyint,0x7) & SUBSTRING(0x4D79205465737420537472696E67,1,1)
逻辑在于在AND(&
)的左手侧,我们有一个字节与3位设置。在右侧,我们从varbinary
中提取单个字节(SUBSTRING
是基于1的而不是基于0的,所以这是第一个字节)。
为了从第三个字节的最后5位,我们必须:
select CONVERT(tinyint,0xF8) & SUBSTRING(0x4D79205465737420537472696E67,3,1)
是否有可能在varbinary上做子串?如果是这样,每个字节算作一个字符? –
@GuillermoGutiérrez - 我链接到它的文档。我不会说每个字节都算作字符。相反,它是根据字节而不是字符显式定义的:“* start *和* length *的值必须以文本,图像,二进制文件的ntext,char或varchar数据类型和字节数的字符数指定varbinary数据类型“。 –
非常感谢...... –
那你试试? – Amber