【问题标题】:How to pass array as varbinary in mssql?如何在 mssql 中将数组作为 varbinary 传递?
【发布时间】:2011-04-05 18:03:07
【问题描述】:

我需要使用 php 将数组作为 varbinary 参数传递给 ms sql 存储过程。我不确定如何将数组转换为 varbinary 或等效的。

我该怎么做?

谢谢

【问题讨论】:

  • 您无法存储本机类型/获取如果 AFAIK 的表示,很可能,您只想在保存时使用 serialize,在检索时使用 unserialize
  • 我尝试了很多东西,最后使用 pack() 让它通过,但是我在存储过程和将 varbinary 转换为 GUID 时遇到了问题,所以我只是拿了一个完全不同的方法。
  • 确认,pack 可以提高存储效率,这取决于 unpack 的开销是否有效(以及该领域可能使用的其他语言)。

标签: php sql-server


【解决方案1】:

如果您现在使用的是 SQL Server 2016 或更新版本,您应该使用 varbinary 数据类型。

如果您使用的是旧版本,则将其放入 varchar(max) 列并使用以下 tSQL 将其从字符串转换回十六进制:

SET NOCOUNT ON;

DECLARE @BinaryValue    [varbinary](256) ,
        @x              [xml]

SET @x = '<root></root>;'

SET @BinaryValue = 0x0200CDDBC2A60A08B57EDF7622CA52A45EC3BC234CE6A0F7D038F3BAE0EC00

SELECT  N'0x' + @x.value('xs:hexBinary(sql:variable("@BinaryValue"))',
                         '[varchar](512)')

SET NOCOUNT OFF;
GO

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2019-07-12
    • 2011-09-12
    • 1970-01-01
    • 2021-01-15
    相关资源
    最近更新 更多