[英]SQL select Where Clause statement
我很确定这是不可能的,但是我想问一下这里的专家是否有可能编写一条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
解析为视图列的视图。
这应该工作:
select * from web_query where sent_to like '%"business_ids":["3516"]%';
试试下面的代码
SELECT * FROM TABLE_NAME t1
WHERE t1.sent_to.business_ids = 3516;
如果send_to列上仅包含businessId,则可以简单地执行以下操作:
Select * from ... Where sent_to LIKE '%"3516"%'
我不认为您要问的是可以做到的,但是您可以通过简单的技巧来做到这一点
select * from yourtable where sent_to like '%5060%'
这将使您获得业务ID为5060的行
如果您希望根据自己的需要获得更大的灵活性,则可以选择有单独的表
这不是一个很明确的问题。
如果您必须在send_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子句上有一个整数..如果这是故意的并且是问题的一部分,那么您可以使用conversion:
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%'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.