繁体   English   中英

SQL选择Where子句语句

[英]SQL select Where Clause statement

我很确定这是不可能的,但是我想问一下这里的专家是否有可能编写一条SQL语句来

Select * from ... Where [‘sent_to’]['bissness_id']=3516 . 

如果是,那么它的语法是什么? (请看下面的图片)

选择* from ... ... send_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM