我很确定这是不可能的,但我想问问这里的专家是否可以写一条 SQL 语句来
Select * from ... Where [‘sent_to’]['bissness_id']=3516 .
如果是,那么它的语法是什么?(请看下图)
我很确定这是不可能的,但我想问问这里的专家是否可以写一条 SQL 语句来
Select * from ... Where [‘sent_to’]['bissness_id']=3516 .
如果是,那么它的语法是什么?(请看下图)
像这样的东西会起作用:
select * from web_query where sent_to like '%"business_ids":["3516"]%';
或者,或者:
select * from web_query where sent_to like '%"business_ids":[%"3516"%]%';
但是您真的不应该将 JSON 作为字符串值存储在数据库列中。它在几个层面上都违背了数据库的目的。
编辑:如果您想避免更改表结构但仍想从数据库布局的结构改进中受益,您可以考虑编写一些可以解析sent_to
为视图列的视图。
不是很清楚的问题。。
如果您必须满足 sent_to 中非“bissness_id”的内容,那么您需要明确:
DECLARE @FilterID Varchar(10) = '"3516"'
Select * from ... Where sent_to LIKE '%'+@FilterID+'%'
AND sent_to LIKE '%business_ids%'
如果该列只有“bissness_id”,那么它更简单
DECLARE @FilterID Varchar(10) = '"3516"'
Select * from ... Where sent_to LIKE '%'+@FilterID+'%'
因为在您的示例中,您在 where 子句中有一个整数。如果这是故意的并且是问题的一部分,那么您可以只使用转换:
DECLARE @FilterInt Int = 3516
DECLARE @FilterID Varchar(10) = '"' + CAST(3516 AS Varchar(10)) + '"'
Select * from ... Where sent_to LIKE '%'+@FilterID+'%'
AND sent_to LIKE '%business_ids%'
如果您的 sent_to 列上只有 businessIds,您可以简单地执行以下操作:
Select * from ... Where sent_to LIKE '%"3516"%'
我不认为你的要求可以做到,但你可以用简单的技巧做到这一点
select * from yourtable where sent_to like '%5060%'
这将使您获得业务 ID 为 5060 的行
如果您想根据您的要求获得更大的灵活性,您可以选择单独的表格
这应该工作:
select * from web_query where sent_to like '%"business_ids":["3516"]%';
试试下面的代码
SELECT * FROM TABLE_NAME t1
WHERE t1.sent_to.business_ids = 3516;