如何从SQL二进制字段中获取单个字节

Mag*_*pie 10 sql sql-server

我在SQL Server中有一个二进制字段,我想在SQL函数中读取一个字节.在代码中我会使用一个字节数组.SQL中是否有等价物?

谷歌找不到任何东西.

Phi*_*ley 12

SUBSTRING功能应该足够了.一个简单的例子,假设表MyTable与列SomeData,二进制(10)非null:

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
Run Code Online (Sandbox Code Playgroud)

有更好的基于集合的方法来做到这一点,但对于短值,这应该是足够的.

  • 根据 SQL 2008 联机丛书:“如果表达式是受支持的字符数据类型之一,则返回字符数据。如果表达式是受支持的二进制数据类型之一,则返回二进制数据。返回的字符串与具有表中显示的例外情况。” (2认同)

Joe*_*lli 5

您可以使用SUBSTRING遍历二进制字段.

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 */
Run Code Online (Sandbox Code Playgroud)