㈠ sql case when then else end 和 ibatis問題
看看編碼是否是一致的,可能內部用的Unicode,外面用的UTF8或者其他的什麼就可能導致這個問題。
㈡ 關於SQL case when then else end 問題:有沒有錯我沒有運行出來。。。
1.第一行select後面的需要增加空格,否則語句中的select就和後面的語句連上了,會出現語法錯誤;
2.strSql = strSql + "(case when a.cd_Value = '40' then '其他人員' end) AS cd18, ";這行中cd18後的逗號去掉換成空格;
3.strSql = strSql + "FROM xt_t_CodeDetail a ,xt_t_CodeType b";這行中最後b後面需要增加空格。
試試吧。目前就看出這么多問題,如果還是有問題,把報錯提示發出來看看。
㈢ 關於sql server語句case when then else end 的語句怎麼用
--SQL中有判斷的地方就可以用到他,相當於Excel的iif()函數,其他語言的ifelse
--如果怎樣就怎樣,否則就怎樣
--比如,如果性別為1就顯示為男,否則就顯示為女
SelectName,casewhenSex=0then'男'else'女'end性別
FromZlEmployee
--行轉列
Select
Code,
CasewhenSex=0thenNameelse''endAs男,
CasewhenSex=1thenNameelse''endAs女
FromZlEmployee
--自定義排序
SelectName,SexfromZlEmployee
orderbycaseLeft(Name,1)
when'趙'then1
when'錢'then2
when'孫'then3
when'李'then4
when'周'then5
when'吳'then6
when'鄭'then7
when'王'then8
Else9End
㈣ 為啥SQL中select語句中,有時用:case......when …… then …… else …… end as x
selectsum(casewhenA.CLOSE_ID='T'then1else0end)from(selectdistinctA.CLOSE_ID,A.MO_NOfromA)T'完成種數'=COUNT(CASEWHENA.CLOSE_ID='T'THENA.MO_NOELSE0END)這句的邏輯就有問題,你要求A.CLOSE_ID='T'時,A.MO_NO的個數嗎看那樣你直接寫selectcount(A.MO_NO)fromAwhereA.CLOSE_ID='T'就好了就算你一定要用casewhenthen,你也要用sum而不是count,你用count是所以(CASEWHENA.CLOSE_ID='T'THENA.MO_NOELSE0END)的個數,就算是0,它也是個值,仍然會被count進去啊,你只有sum時,0才是不會起做用的數。
㈤ SQL條件控制(case when...then...else...end)
select ByeTime,case when len(ByeTime)>0 then str(DATEDIFF(day,ComeInTime,ByeTime))+'(已離職)'
else str(DATEDIFF(day,ComeInTime,getdate())) end as test
from myUser where DelFlag='0' and UserID='cq'
這樣試一下.語法應該沒有問題
㈥ SQL中case,when,then,else的用法是什麼
用法:
1、第一種寫法:
復制代碼
SELECT
s.s_id,
s.s_name,
s.s_sex,
CASE
WHEN s.s_sex = '1' THEN '男'
WHEN s.s_sex = '2' THEN '女'
ELSE '其他'
END as sex,
s.s_age,
s.class_id
FROM
t_b_student s
WHERE
1 = 1
2、第二種寫法
SELECT
s.s_id,
s.s_name,
s.s_sex,
CASE s.s_sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他'
END as sex,
s.s_age,
s.class_id
FROM
t_b_student s
WHERE
1 = 1
兩個運行結果一樣:
有一個需要注意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。
(6)sqlthenelseend擴展閱讀:
Case具有兩種格式:簡單Case函數和Case搜索函數。
簡單Case函數:
CASE sex
WHEN『1』THEN『男』
WHEN『0』THEN『女』
ELSE『其他』END
Case搜索函數:
CASE WHEN sex=『1』THEN『男』
WHEN sex=『0』THEN『女』
ELSE『其他』END
顯然,簡單Case函數生在簡潔,但是它只適用於這種單欄位的單值比較,而Case搜索函數的優點在於適用於所有比較的情況。
還有一個需要注意的問題,Case函數在滿足了某個符合條件後,剩下的條件將會被自動忽略,因此,即使滿足多個條件,執行過程中也只認第一個條件。
在使用CASE WHEN時,可以把它當作一個沒有欄位名的欄位,欄位值根據條件確認,在需要使用欄位名時可以是用as來定義別名。
㈦ sql case when then else end中一定要有else嗎
--可以不寫else但是一定要有end,沒有else如果不滿足條件會以null填充
㈧ sql server 中的 case when then else end中end起什麼作用我看有的語句沒有end也
selectsum(casewhenA.CLOSE_ID='T'then1else0end)from(selectdistinctA.CLOSE_ID,A.MO_NOfromA)T'完成種數'=COUNT(CASEWHENA.CLOSE_ID='T'THENA.MO_NOELSE0END)這句的邏輯就有問題,你要求A.CLOSE_ID='T'時,A.MO_NO的個數嗎?那樣你直接寫selectcount(A.MO_NO)fromAwhereA.CLOSE_ID='T'就好了就算你一定要用casewhenthen,你也要用sum而不是count,你用count是所以(CASEWHENA.CLOSE_ID='T'THENA.MO_NOELSE0END)的個數,就算是0,它也是個值,仍然會被count進去啊,你只有sum時,0才是不會起做用的數。
㈨ SQL條件控制(case when...then...else...end) 的詳細解釋是什麼
例如一個3條件取值的欄位:
casewhen條件1then取值1when條件2then取值2else取值3end
when後接條件語句,then後為欄位取值(數值或字元串等都可以,但類型須一致)。
㈩ sql的case when then else end我知道能判斷兩層,怎麼實現判斷三次呢
selectcasewhencolumn=1then'a'
whencolumn=2then'b'
elsec
end