Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL查询裁剪二进制列_Sql_Sql Server_Sql Server 2008_Binary Data - Fatal编程技术网

使用SQL查询裁剪二进制列

使用SQL查询裁剪二进制列,sql,sql-server,sql-server-2008,binary-data,Sql,Sql Server,Sql Server 2008,Binary Data,我有几个表,每个表都有一个具有特定大小的二进制列(即8字节、16字节、32字节等)和一个指示该二进制列中实际数据大小的大小列,我想将所有行移动到一个varbinary(MAX)表中 示例: 我正在寻找一个SQL查询,该查询将把表的内容传输到一个具有varbinary(MAX)列的新表中,但它必须将数据裁剪到指定的大小。 例如,类似的情况可能会发生: INSERT INTO newVarBinaryTable(new_id,new_data)从oldBinaryTable中选择(id,newDa

我有几个表,每个表都有一个具有特定大小的二进制列(即8字节、16字节、32字节等)和一个指示该二进制列中实际数据大小的大小列,我想将所有行移动到一个varbinary(MAX)表中

示例:

我正在寻找一个SQL查询,该查询将把表的内容传输到一个具有varbinary(MAX)列的新表中,但它必须将数据裁剪到指定的大小。 例如,类似的情况可能会发生:
INSERT INTO newVarBinaryTable(new_id,new_data)从oldBinaryTable中选择(id,newData=crop(data,size))

注意:我的数据库在SQL Server 2008上

适用于二进制列。在你的情况下,你需要这个表达式

INSERT INTO newVarBinaryTable 
    (new_id, new_data) 
    select id, cast(left(data, size) as varbinary(max))
        FROM oldBinaryTable
SUBSTRING(data, 1, size)

注意8字节二进制(8)列应为0x112233445667788,而不是0x12345678。每个字节有2个十六进制字符

如果已经有一个列“size”,则可以只使用子字符串

输出

id          newbin
----------- ---------------------
1           0x0102030405060708
2           0x0102030405
3           0x010203040506
4           0x01020304050607
5           0x0102030405060708
为您的数据

INSERT INTO newVarBinaryTable (new_id, new_data)
select id, substring(data, 1, size)
FROM oldBinaryTable
INSERT INTO newVarBinaryTable (new_id, new_data)
select id, substring(data, 1, size)
FROM oldBinaryTable