zoukankan      html  css  js  c++  java
  • 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,这样是得不到我们期望的数据的或者说得不到正确的数据的
                    
          
      所以,上面的这种写法是错误的,上面的虽然是小问题,但是有时候就是这些小问题,让我们‘很上头’,所以,平时规范的使用,可以避免很多麻烦的事情。也会让我们少去很多头疼的时间,要不然,桌子上的头发看的自己都伤心,以前觉得那些程序员秃顶是胡扯,现在感觉这个确实有可能,因为我平时很烦的时候就后揪头发,哎、、、所以,规范的编写帮助我们在不知不觉中就能减少很多的麻烦!
         做个记录,希望能够帮到别人!
     
     
  • 相关阅读:
    面试题目-atof与ftoa
    数据结构-List
    数据结构-Vector
    面试题目-计算最大公约数
    数据结构-二分查找
    面试题目-用递归通过单字符输出打印多位的数字
    Linux-守护进程的实现
    面试题目-链表反转
    Linux-C程序的存储空间布局
    Linux-如何添加路由表
  • 原文地址:https://www.cnblogs.com/wxb0328/p/4221411.html
Copyright © 2011-2022 走看看