【问题标题】:How to convert json string to varbinary in SQL Server / Oracle / Postgres?如何在 SQL Server/Oracle/Postgres 中将 json 字符串转换为 varbinary?
【发布时间】:2019-07-20 06:33:19
【问题描述】:

如何在 SQL 中将 json 字符串转换为varbinary

我在 SQL Server 中尝试了以下查询:

  SELECT CONVERT(VARBINARY(MAX), '[{"name": "John","skills": ["SQL", "C#", "Azure"]}, {"name": "Jane","surname": "Doe"}]', 1);

但它会抛出此错误:

消息 8114,第 16 级,状态 5,第 7 行
将数据类型 varchar 转换为 varbinary 时出错。

我该如何解决这个问题?

【问题讨论】:

  • 不确定 varbinary 在 Postgres 或 Oracle 的上下文中应该是什么。 byteablob?
  • 是的 varbainary 用于 sqlserver。但我想在所有 dbs(postgres/oracle)中使用适当的函数和数据类型来实现类似的功能。示例查询是 fr sql server
  • 谢谢,但我在那里找不到任何帮助:(
  • 出于某种原因,COMPRESS 和 DECOMPRESS 突然出现在脑海中,但 JSON 确实应该存储到 NVARCHAR 数据类型中,因为本机 JSON 函数仅适用于此处讨论 SQL Server (MSSQL) 的数据类型..跨度>

标签: sql-server tsql


【解决方案1】:

您在进行转换时将 Style 值指定为 1,这仅在被转换的表达式是具有偶数个十六进制数字的字符表达式时才有效。由于 JSON 是非字符表达式,因此您应该使用 Style 值 0。

这应该可以正常工作:

SELECT CONVERT(VARBINARY(max), '[{"name": "John","skills": ["SQL", "C#", "Azure"]}, {"name": "Jane","surname": "Doe"}]', 0);

更多信息可以在in documentation找到。

【讨论】:

    【解决方案2】:

    语法是

    select  convert(varbinary(100), 'sql server version')
    

    sql fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2016-11-04
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多