PostgreSQL中的引號和null


  今天工作時寫了一個sql,但是PostgreSQL總是提示有語法錯誤,簡單的做個記錄:

 問題1、'' 和“”單引號和雙引號
        舉個例子:
    
1  #1select id, delivery_date, sal_plan_date from zaiko_shop where id="";
2  #2select id, delivery_date, sal_plan_date from zaiko_shop where id='';

 

上面的兩句sql中不同的知識#1用的是雙引號,#2用的是單引號
        但是#1卻會報錯:
    
 上面的這個問題就提示我們在寫sql語句時盡量這樣做:
        最外面的使用雙引號,表示拼接一個sql語句,sql語句中的字符串條件使用單引號
         $sql = "select id, delivery_date, sal_plan_date from zaiko_shop where id='' "
問題2、null 和 ''
舉個例子:
      
1   SELECT COUNT(*) AS adv_num
2                 FROM zaiko_shop
3                 WHERE delivery_date!=null
4                     AND sal_plan_date != null
5                     AND to_char(delivery_date,'YYYY-MM') != to_char(sal_plan_date,'YYYY-MM')
6                     AND shop_id=1031
7                     AND del_flag=0
8                     AND sal_plan_date BETWEEN '2014-01-01' AND '2014-12-31';
  首先就是對於這個date類型的日期判斷為空? 
        上面的這種寫法是錯誤的,翻到一些以前學習mysql是的筆記,可以做個參考,畢竟都是sql 相同的地方還是有很多的
               首先,我們應該清楚 : null 和 ‘’的區別?
                     ‘’相當於你在銀行辦理了一張銀行卡,只是里面沒有錢而已
                     null 相當於你就根本沒有辦理銀行卡,一些基本的描述信息都是沒有的
              其次,對於 sal_plan_date != null 這里的 !=null
                null是一種類型,比較時只能使用專門的 is null 或者 is not null來比較
                     碰到運算符,一律返回null,比如 :where name!=null,這樣是得不到我們期望的數據的或者說得不到正確的數據的
                
      
  所以,上面的這種寫法是錯誤的,上面的雖然是小問題,但是有時候就是這些小問題,讓我們‘很上頭’,所以,平時規范的使用,可以避免很多麻煩的事情。也會讓我們少去很多頭疼的時間,要不然,桌子上的頭發看的自己都傷心,以前覺得那些程序員禿頂是胡扯,現在感覺這個確實有可能,因為我平時很煩的時候就后揪頭發,哎、、、所以,規范的編寫幫助我們在不知不覺中就能減少很多的麻煩!
     做個記錄,希望能夠幫到別人!
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM