KesionCMS-SQL标签中条件语句使用的说明

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

KesionCMS-SQL标签中条件语句使用的说明



标签格式[ ]

{$IF(condition||out1||out2)}




标签说明[ ]

当满足 condition 条件,输出out1,否则输出 out2,类似c,c#等语言里的三元运算符a?b:c,需要注意的时每个条件对都必须包含两个|| condition可以是任何支持asp的条件运行符(如=,〉,〈,〉=,〈=,〈〉等)和函数(如datediff,isdate,isarray等)



注意点说明[ ]

这个标签只能应用于sql标签的循环体中,且不能嵌套,但可以平行出现多对使用 标签的condition部分必须是严格按照asp的语法书写 举例说明

  a.如我们希望字段intro(varchar类型)为空时,输出"---",不为空时,原文输出. 
   正确写法1: 
          "{$Field(intro,Text,0,...,0,空)}"="空"
   正确写法2: 
          "{$Field(intro,Text,0,...,0,)}"=""

   错误写法1: 
         {$Field(intro,Text,0,...,0,空)}="空"
   错误写法2: 
      {$Field(intro,Text,0,...,0,)}="空"

关键在于上面加色的双引号是必须的,不能少 比如intro字段为 "kesioncms",那么我们可以将上面理解为:

  正确写法1: 
          "kesioncms"="空"
   正确写法2: 
          "kesioncms"=""

   错误写法1: 
         kesioncms="空"
   错误写法2: 
       kesioncms="空"

这样就可以清楚看出,1,2种是正确写法,后面的都是错误的,少了双引号 再比如intro字段为空时,即没有内容.那么我们可以将上面理解为:

正确写法1: 
          "空"="空"
   正确写法2: 
          ""=""

   错误写法1: 
         空="空"
   错误写法2: 
       ="空"

b.如我们希望最最近三天内发布的文章,输出new标签,日期字段为AddDate(datetime类型). 正确写法:

          {$IF(datediff("d","{$Field(adddate,Date,YYYY-MM-DD)}",now)<3||
<font color=red><b>new</b></font>||
<font color="#cccccc">{$Field(adddate,Date,MM-DD)}</font>)}
'''错误写法'''
          {$IF(datediff("d",{$Field(adddate,Date,YYYY-MM-DD)},now)<3||
<font color=red><b>new</b></font>||
<font color="#cccccc">{$Field(adddate,Date,MM-DD)}</font>)}
关键还是上面的双引号不能少.假设我们这里的adddate值为2009-3-10号,那么以上就转变为
正确:datediff("d","2009-3-10",now)<3     ---符合asp语法
错误:datediff("d",2009-3-10,now)<3        ---不符合asp语法

经过以上说明,我想你也大概明白了,为什么经常会得不到预期的效果了,特别应该注意的就是第二点条件部分的写法,比较有讲究,如果是文本型字段,我们往往可以加一个"空"字替代,如下图


SQL标签中条件语句使用的说明.png


参考来源[ ]