当前位置: 代码迷 >> Sql Server >> 在SQL的where 中判断传进去的参数,然后显示指定的信息
  详细解决方案

在SQL的where 中判断传进去的参数,然后显示指定的信息

热度:98   发布时间:2016-04-24 09:05:51.0
在SQL的where 中判断传进来的参数,然后显示指定的信息

--[Table_1] 
CREATE TABLE [dbo].[Table_1](
[A1] [nchar](10) NULL,
[A2] [nchar](10) NULL,
[A3] [nchar](10) NULL
) ON [PRIMARY]
--[Table_2]
CREATE TABLE [dbo].[Table_2](
[B1] [nchar](10) NULL,
[B2] [nchar](10) NULL
) ON [PRIMARY]

INSERT INTO  [Table_1] (A1,A2,A3) VALUES('0001','AA','N')
INSERT INTO  [Table_1] (A1,A2,A3) VALUES('0002','BB','N')
INSERT INTO  [Table_1] (A1,A2,A3) VALUES('0003','CC','Y')
INSERT INTO  [Table_2] (B1,B2) VALUES('0003','张三')
-----------
SELECT A1,A2
FROM [Table_1]
LEFT JOIN [Table_2] ON A1=B1 
WHERE (B2='张三' and A3='Y') OR (A3='N')
--------
A1      A2
0001       AA        
0002       BB        
0003       CC        

--------------------------------
想实现这样的功能,可能会表述不清楚..
WHERE (B2='张三' and A3='Y') OR (A3='N')
其中‘张三’ 是我传进去的参数。如何当‘张三’ 传进来是‘李四’的时候
结果显示成:
--------
A1      A2
0001       AA   

或者说如何在SQL的where 中判断传进来的参数,然后显示指定的信息?



------解决思路----------------------
如果是想穿

引用:
是啊,是没有李四
就是想按照 当传进来 是 B2='李四' 的时候 
只显示 0001          AA 
至于为什么不显示0002          BB ,我也说不上来
一个特殊的需求吧
我就知道我会表达的不清楚

这下就说清楚了。。
------解决思路----------------------
引用:
Quote: 引用:

这种情况我一般是在方法里传参数啊
SELECT A1,A2
FROM [Table_1]
LEFT JOIN [Table_2] ON A1=B1 
WHERE (B2='“+name+”' and A3='Y') OR (A3='N')

用存储过程定义参数也可以。

恩 我就是这么写的
先实现 当 name=李四 的时候  A1='0001' 

而name=其他人名的时候,不受限制 就是这句  OR (A3='N') 也不能少

业务逻辑就可以判断啊,

/// <summary>
        /// 获得数据列表
        /// </summary>
        public DataSet GetList(string name)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select * ");
            strSql.Append(" FROM table0 ");
            if (name == "李四")
            {
                strSql.Append(" WHERE A1='0001' ");
            }
            else
            {
                strSql.Append(" WHERE (B2='" + name + "' and A3='Y') OR (A3='N')");
            }
            return DbHelperSQL.Query(strSql.ToString());
        }

------解决思路----------------------
DECLARE @name varchar(10)
SET @name='李四'
SELECT A1,A2
FROM [Table_1]
LEFT JOIN [Table_2] ON A1=B1 
WHERE (@name='李四' A1='0001') OR(@name<>'李四' and ((B2=@name and A3='Y') OR (A3='N')))
  相关解决方案