上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
janlih
註冊時間: 2003-11-04 文章: 69
第 1 樓
|
發表於: 星期二 十月 30, 2007 11:33 am 文章主題: sql 2000 語法問題請教? |
|
|
mdate1='20071001'
mdate2=' ' && 當empty(mdate2) 時,表示日期沒有設限 ps. ' '= default value
mdate1,mdate2為 sql 資料表test欄位
mdateid = dots(date())
mexec="select * from test where ?mdateid>=mdate1 and iif(isempty(mdate2),true,?mdateid<=mdate2)"
nn=sqlexec(nhandle,mexec,"temp")
結果 nn<=0 不正確
請問各位大大 iif(isempty(mdate2),true,?mdateid<=mdate2) 這一段要怎麼寫
janlih 在 星期三 十月 31, 2007 10:17 am 作了第 1 次修改 |
|
回頂端 |
|
|
wuno2001
註冊時間: 2007-02-09 文章: 56
第 2 樓
|
發表於: 星期二 十月 30, 2007 2:25 pm 文章主題: |
|
|
試試 (isempty(mdate2) or ?mdateid<=mdate2)
另外,欄位名有大小寫之分 |
|
回頂端 |
|
|
impotence
註冊時間: 2005-02-21 文章: 135 來自: Hong Kong
第 3 樓
|
發表於: 星期二 十月 30, 2007 4:05 pm 文章主題: |
|
|
CASE WHEN condition THEN true value ELSE false value END _________________ 一個常常忘記 Command 的人 ! |
|
回頂端 |
|
|
janlih
註冊時間: 2003-11-04 文章: 69
第 4 樓
|
發表於: 星期三 十月 31, 2007 10:15 am 文章主題: |
|
|
感謝二位大大的幫忙
方法1:
(isempty(mdate2) or ?mdateid<=mdate2)
方法2:
CASE WHEN isempty(mdate2) THEN true ELSE ?mdateid<=mdate2 END
二者皆已試過
但結果 nn<=0 還是不正確
如果改為 (mdate2='' or ?mdateid<=mdate2) 則 ok
如加入 iif() 或是 isempty()、 case when..就會錯誤 |
|
回頂端 |
|
|
impotence
註冊時間: 2005-02-21 文章: 135 來自: Hong Kong
第 5 樓
|
發表於: 星期三 十月 31, 2007 12:30 pm 文章主題: |
|
|
你用 SPT 的時候 , 請用 SQL 的 command , 而不是 VFP 的 ... 在 SQL 中 , 好像沒有 isempty() ...., 還有 ... 什麼是 THEN true ?? _________________ 一個常常忘記 Command 的人 ! |
|
回頂端 |
|
|
janlih
註冊時間: 2003-11-04 文章: 69
第 6 樓
|
發表於: 星期三 十月 31, 2007 1:11 pm 文章主題: |
|
|
impotence 寫到: | 你用 SPT 的時候 , 請用 SQL 的 command , 而不是 VFP 的 ... 在 SQL 中 , 好像沒有 isempty() ...., 還有 ... 什麼是 THEN true ?? |
CASE WHEN isempty(mdate2) THEN true ELSE ?mdateid<=mdate2 END
Sorry! 以foxpro的寫法應該是where iif(empty(mdate2),.t.,mdateid<=mdate2) 這樣的語法在foxpro是可通過的,但我不知SQL SERVER中,其.t.的寫法是否為true?
而isempty是在help的索引中找到的? |
|
回頂端 |
|
|
wuno2001
註冊時間: 2007-02-09 文章: 56
第 7 樓
|
發表於: 星期四 十一月 08, 2007 5:34 pm 文章主題: |
|
|
試試 ( ( mdate2 is null ) or ?mdateid<=mdate2) |
|
回頂端 |
|
|
|