經(jīng)常在壇子里看到一些用戶對sql標(biāo)簽的條件使用不夠了解,導(dǎo)致得不到預(yù)期的效果.今天給大家講一下使用sql標(biāo)簽條件里,需要注意的一些細(xì)節(jié)問題.
標(biāo)簽格式:
{$IF(condition||out1||out2)}
標(biāo)簽說明:當(dāng)滿足 condition 條件,輸出out1,否則輸出 out2,類似c,c#等語言里的三元運(yùn)算符a?b:c,需要注意的時每個條件對都必須包含兩個||
condition可以是任何支持asp的條件運(yùn)行符(如=,〉,〈,〉=,〈=,〈〉等)和函數(shù)(如datediff,isdate,isarray等)
注意點說明:
- 這個標(biāo)簽只能應(yīng)用于sql標(biāo)簽的循環(huán)體中,且不能嵌套,但可以平行出現(xiàn)多對使用
- 標(biāo)簽的condition部分必須是嚴(yán)格按照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,)}="空"
關(guān)鍵在于上面加色的雙引號是必須的,不能少
比如intro字段為 "kesioncms",那么我們可以將上面理解為:
正確寫法1:
"kesioncms"="空"
正確寫法2:
"kesioncms"=""
錯誤寫法1:
kesioncms="空"
錯誤寫法2:
kesioncms="空"
這樣就可以清楚看出,1,2種是正確寫法,后面的都是錯誤的,少了雙引號
再比如intro字段為空時,即沒有內(nèi)容.那么我們可以將上面理解為:
正確寫法1:
"空"="空"
正確寫法2:
""=""
錯誤寫法1:
空="空"
錯誤寫法2:
="空"
b.如我們希望最最近三天內(nèi)發(fā)布的文章,輸出new標(biāo)簽,日期字段為AddDate(datetime類型).
正確寫法1:
{$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>)}
關(guān)鍵還是上面的雙引號不能少.假設(shè)我們這里的adddate值為2009-3-10號,那么以上就轉(zhuǎn)變?yōu)?br />
正確:datediff("d","2009-3-10",now)<3 ---符合asp語法
錯誤:datediff("d",2009-3-10,now)<3 ---不符合asp語法
經(jīng)過以上說明,我想你也大概明白了,為什么經(jīng)常會得不到預(yù)期的效果了,特別應(yīng)該注意的就是第二點條件部分的寫法,比較有講究,如果是文本型字段,我們往往可以加一個"空"字替代,如下圖
此主題相關(guān)圖片如下:未命名.jpg
