【问题标题】:How to manipulate SQL IN Operator to return all values as a result如何操作 SQL IN 运算符以返回所有值作为结果
【发布时间】:2019-11-05 07:01:12
【问题描述】:

我正在编写一个 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');

该变量在运行时填充,是一个字符串变量。

现在的问题是,我对 jar 没有任何控制权,也无法更改其中的任何内容。

我的目标仍然是在表格中显示所有内容。**

我尝试将' '(空白)放在命令中,但它只返回城市为ALL的行。

那么有什么方法可以让我使用 in 运算符获取所有行的结果,或者我应该回到以前的 jar 进行简单的选择查询。

【问题讨论】:

    标签: java sql select in-operator


    【解决方案1】:

    在这里您可以在查询中传递动态或运行时值。

    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

    【讨论】:

    • 这是针对未说明正在使用的数据库产品的问题的数据库特定答案。
    【解决方案2】:

    使用case 语句或mysql if 函数来检查您的variable 是否为空

    select * from table where city In (if(length(variable) > 0, city , ''), 'All');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      相关资源
      最近更新 更多