在我这个例子中where 1=1 {0}什么意思?{0}指的哪个?
问题描述:
string table = @"select a.IDNumber,(a.SurName||a.Name) as Name,a.Sex,a.Gzdw,a.Rszgdw,sum(CASE WHEN b.[State]=0 THEN 1 ELSE 0 END) AS wsj
,sum(CASE WHEN b.[State]=1 THEN 1 ELSE 0 END) AS sz
,sum(CASE WHEN b.[State]=2 THEN 1 ELSE 0 END) AS cz
,sum(CASE WHEN b.[State]=3 THEN 1 ELSE 0 END) AS jc
,(select COUNT(distinct ID) from CardApplyRecord where EmployeeID=a.ID and [State]=0) AS sbz
from Employee a inner join [Cards] b on a.IDNumber=b.IDNumber where 1=1 {0} group by a.ID,a.IDNumber,a.SurName,a.Name,a.Sex,a.Gzdw,a.Rszgdw order by a.Gzdw";
请问一下,
where 1=1 {0}什么意思?{0}指的哪个?
麻烦大佬指点一下。
答
这是C#里面string.Format函数所用的参数的占位符
下面应该就有
string.Format(table, " and 条件=xxx");
那么" and 条件=xxx"就自动被放在 {0} 的位置上,构成sql语句。
之所以加上1=1,这样,就不用考虑第一个条件前面不加and的问题了。
比如
select ... where 条件1=xxx and 条件2 = xxx and 条件3=xxx
很明显,条件2、3前面有and,条件1前面没有,要单独处理,麻烦
但是
select ... where 1=1 and 条件1=xxx and 条件2 = xxx and 条件3=xxx
追加条件的时候,不需要判断,都是 and 条件n=xxx
答
{0}是传入的其他 条件
答
查询SQL里的这些是主要接下来执行的预编译SQL传递参数用的.{0}
就是指第一个参数替换这个位置{0}
.
比如以下伪代码, 就是把AND Name='1'
替换{0}.
Statement.prepareStatement(table,"AND Name='1'");