moonlightghost
2019-09-23 10:14
采纳率: 50%
浏览 773

在我这个例子中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}指的哪个?

麻烦大佬指点一下。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • threenewbee 2019-09-23 10:23
    已采纳

    这是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

    已采纳该答案
    打赏 评论
  • Wl_皮囊 2019-09-23 10:17

    {0}是传入的其他 条件

    打赏 评论
  • infoworld 2019-09-23 10:19

    查询SQL里的这些是主要接下来执行的预编译SQL传递参数用的.{0} 就是指第一个参数替换这个位置{0}.
    比如以下伪代码, 就是把AND Name='1'替换{0}.

    Statement.prepareStatement(table,"AND Name='1'");
    
    打赏 评论

相关推荐 更多相似问题