如何操作SQL IN运算符以返回所有值作为结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何操作SQL IN运算符以返回所有值作为结果相关的知识,希望对你有一定的参考价值。
我正在研究Java代码,其唯一目的是显示数据库表中的所有数据。
用于从数据库中获取表数据的查询是在jar中编写的。
表结构有点像:
Column1 Column2 City
Dummy Dummy abc
Dummy Dummy xyz
Dummy Dummy pqr
Dummy Dummy ALL
以前,jar中的sql命令看起来像这样:
select * from table;
但是现在在较新版本的jar中,查询就像:
select *
from table
where city In ( variable ,'All');
该变量在运行时填充,是一个字符串变量。
现在的问题是,我对罐子没有任何控制,我无法更改其中的任何内容。
而且我的目标仍然是在表中显示所有内容。**
我尝试在命令中放入' '
(空白),但只返回city为ALL的行。
所以有什么方法可以使用in运算符来获取所有行的结果,或者我应该返回具有简单选择查询的上一个jar。
答案
这里您可以在查询中传递动态或运行时值。
DECLARE @ParameterDefinition NVARCHAR(MAX)
SET @ParameterDefinition = '@P_Filter NVARCHAR(MAX)';
DECLARE @SQL NVARCHAR(MAX);
DECLARE @Filter NVARCHAR(MAX) = '' //set here filter value
SET @SQL = 'select * from table where city In (@P_Filter);'
EXECUTE sp_executesql @SQL, @ParameterDefinition,
@P_Filter = @Filter
或使用STRING_SPLIT Function
select * from table where city In (STRING_SPLIT([FILTER_VALUE]));
有关更多详细信息,请访问此链接Click me
另一答案
尝试一下:
select *
from table
where city in (select city from table)
另一答案
使用case
语句或mysql
if
函数检查variable
是否为空
select * from table where city In (if(length(variable) > 0, city , ''), 'All');
另一答案
这将与SQL Server一起使用:
select *
from table
where city In ( city ,'All');
并且在ORACLE DEMO中>
因此,如果可能的话,您只需要发送城市专栏
以上是关于如何操作SQL IN运算符以返回所有值作为结果的主要内容,如果未能解决你的问题,请参考以下文章
[讲解]sql except和intersect运算符(比拟两个或多个select语句的结果并前去非重复值)