我在SQL Server中有一个二进制字段,想要在SQL函数中每次读取一个字节。如果是代码,我会使用一个字节数组。在SQL中有类似的吗?
我在谷歌上搜索了一下,但没有找到相关信息。
我在SQL Server中有一个二进制字段,想要在SQL函数中每次读取一个字节。如果是代码,我会使用一个字节数组。在SQL中有类似的吗?
我在谷歌上搜索了一下,但没有找到相关信息。
SUBSTRING函数应该已经足够了。以下是一个快速的示例,假设有一个名为MyTable且包含列SomeData(二进制类型,长度为10)的表:
DECLARE
@OneByte binary(1)
,@Loop int
SET @Loop = 0
WHILE @Loop < 10
BEGIN
SET @Loop = @Loop + 1
SELECT @OneByte = substring(SomeData, @Loop, 1)
from MyTable
-- Process accordingly
END
有更复杂的基于集合的方法来解决这个问题,但对于短值,这种方法应该已经足够了。
declare @BinaryColumn binary(5)
set @BinaryColumn = convert(binary,'abcde')
declare @Counter int, @ColumnLength int
set @Counter = 1
set @ColumnLength = LEN(@BinaryColumn)
while (@Counter <= @ColumnLength) begin
select SUBSTRING(@BinaryColumn, @Counter, 1)
set @Counter = @Counter + 1
end /* while */
Varbinary作为一种类型将表现为一个字节数组,您可以使用substring从中读取单个字节。