使用" in"在有条件的情况下

时间:2017-12-13 07:40:35

标签: sql-server case where-in

我有一个sql表,其中有一列"键入"。它具有值A,B,C,D 我正在编写一个存储过程,其中的类型是in参数@type @type可以有值' A'或者' A,B,C'或者'所有'基于屏幕上的用户选择。这意味着用户可以选择单个,多个或所有选项 我需要在列#34;类型"。

上使用条件从我的表中过滤数据

我想要类似下面的内容

Locale locale = new Locale("hi"); // where 'hi' is Language code, set this as per your Spinner Item selected
Locale.setDefault(locale);
Configuration config = getBaseContext().getResources().getConfiguration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
      getBaseContext().getResources().getDisplayMetrics());

我编写了一个split函数,它以表格格式返回值。

选择ALL后,应返回整个表格。选择特定类型时,只应返回那些类型。

我正在使用sqlserver 2012 请帮助!!

3 个答案:

答案 0 :(得分:3)

试试这个

SELECT * 
FROM maintable 
WHERE @type ='ALL' OR    
(@type <>'ALL' AND TYPE IN (SELECT data FROM SplitString(@type,','))

答案 1 :(得分:0)

你可以这样做:

if @type ='ALL' 
    set @type ='A,B,C,D'

select * from maintable where
type in (select data from SplitString(@type, ','))

答案 2 :(得分:0)

您可以使用IF

IF @type ='ALL'
    SELECT *
    FROM MainTable
        ELSE
            SELECT *
            FROM MainTable
            WHERE Type IN (SELECT data FROM SplitString(@type,',') )