【问题标题】:using the charindex to match a field to a search使用 charindex 将字段与搜索匹配
【发布时间】:2019-05-27 13:05:31
【问题描述】:

我有一个查询,其中列值之一是 json 格式的值:

column1 {"type":"a","main":"/documents/500/a.pdf","id":500}

我想用where子句中的id来搜索

在哪里column1 = 500

我想使用左侧的500 来匹配搜索

【问题讨论】:

  • 请注明您使用的 SQL Server 版本。 SQL Server 2016 中添加了原生 JSON 支持。如果您需要解析 JSON 并且使用的是旧版本,这可能是升级的好理由。
  • 我把它改成了 sql-server 2016 作为标签
  • SELECT * FROM .. WHERE JSON_VALUE(column1, '$.id') = 500。将CHARINDEX/LIKE 留在家里,以获取此类结构化数据。请注意,如果您希望此搜索高效,您可能需要index the data
  • 看起来我是 12.1 版
  • json_value 似乎不起作用

标签: sql sql-server database sql-server-2016


【解决方案1】:

你可以试试这个:

Declare @t table ( EMpid int , Groups nvarchar(500))

Insert into @t values (500,'{"type":"a","main":"/documents/500/a.pdf","id":500}')

select * from @t where replace(RIGHT(groups, CHARINDEX(':', REVERSE(groups)) -1),'}','') = 500

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多