[TSQL]CASE WHEN筆記

  • 5982
  • 0

摘要:[TSQL]CASE WHEN筆記

今天在把程式端的SQL語法的部分移到Store Procedure裡,
因為要判斷的東西有點多...又不是每個都必要傳入,
這東西在程式裡的話,只要快樂的下if else就可以一個一個串好的往後丟...

丟到Store Procedure裡,我就要哭哭了...
說起來Store Procedure這種東西...
一向是用看的可以溝通,
要我寫就一竅不通~XD

總算拼拼湊湊後有個大概的樣子出來了,
不過,在SP裡寫語法湊出我想要的where條件可是難倒我...
畢竟是我的第一個商業Store Procedure...Orz
幸好看到了dotjum哥的這篇文章,學到了CASE WHEN的用法

多條件查詢使用TSQL WHEN 判斷(就不要在一個一個串字串了)

不過這東西平常很少用到,所以稍微消化後做個筆記,
下次忘了時在GOOGLE上搜尋說不定又搜到這來了~ 哈~


WHERE
   USER_ID = 
     CASE @USER_ID 
          WHEN '' 
          THEN USER_ID 
          ELSE @USER_ID 
     END
--我理解成 當@USER_ID為 '' (空值)時,
--使用USER_ID代入,
--不然就使用@USER_ID代入,其實跟if else也是很像的


上面的句子換成以下列的例子來看


DECLARE @USER_ID VARCHAR(10)

--飯粒1  
SET @USER_ID = 'MOLA'

SELECT * FROM TABLEA
WHERE
   USER_ID = @USER_ID --選出USER_ID為MOLA的資料

--飯粒2
SET @USER_ID = ''

SELECT * FROM TABLEA
WHERE
   USER_ID = USER_ID --這句差不多就是SELECT * FROM TABLEA 這樣了

--這個語法 我喜歡一條線的看
WHERE
   USER_ID = CASE @USER_ID WHEN '' THEN USER_ID ELSE @USER_ID END