標籤:
今天工作時寫了一個sql,但是PostgreSQL總是提示有語法錯誤,簡單的做個記錄:
問題1、‘‘ 和“”單引號和雙引號 舉個例子:
1 #1、select id, delivery_date, sal_plan_date from zaiko_shop where id="";2 #2、select 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_num2 FROM zaiko_shop3 WHERE delivery_date!=null4 AND sal_plan_date != null5 AND to_char(delivery_date,‘YYYY-MM‘) != to_char(sal_plan_date,‘YYYY-MM‘)6 AND shop_id=10317 AND del_flag=08 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,這樣是得不到我們期望的資料的或者說得不到正確的資料的
所以,上面的這種寫法是錯誤的,上面的雖然是小問題,但是有時候就是這些小問題,讓我們‘很上頭’,所以,平時規範的使用,可以避免很多麻煩的事情。也會讓我們少去很多頭疼的時間,要不然,桌子上的頭髮看的自己都傷心,以前覺得那些程式員禿頂是胡扯,現在感覺這個確實有可能,因為我平時很煩的時候就後揪頭髮,哎、、、所以,規範的編寫協助我們在不知不覺中就能減少很多的麻煩! 做個記錄,希望能夠幫到別人!
PostgreSQL中的引號和null