今天工作时写了一个sql,但是PostgreSQL总是提示有语法错误,简单的做个记录:

 问题1、'' 和“”单引号和双引号

        举个例子:
    

  #1、select id, delivery_date, sal_plan_date from zaiko_shop where id="";
#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 和 ''
举个例子:

   SELECT COUNT(*) AS adv_num
FROM zaiko_shop
WHERE delivery_date!=null
AND sal_plan_date != null
AND to_char(delivery_date,'YYYY-MM') != to_char(sal_plan_date,'YYYY-MM')
AND shop_id=1031
AND del_flag=0
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的更多相关文章

  1. Postgresql中的数据类型大全

    一.数值类型: 下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 字节 小范围整数 -32768 到 +32767 integer 4 字 ...

  2. PostgreSQL 中日期类型转换与变量使用及相关问题

    PostgreSQL中日期类型与字符串类型的转换方法 示例如下: postgres=# select current_date; date ------------ 2015-08-31 (1 row ...

  3. PostgreSQL 中定义自己需要的数据类型

    PostgreSQL解决某系数据库中的tinyint数据类型问题,创建自己需要的数据类型如下: CREATE DOMAIN tinyint AS smallint CONSTRAINT tinyint ...

  4. 用python随机生成数据,再插入到postgresql中

    用python随机生成学生姓名,三科成绩和班级数据,再插入到postgresql中. 模块用psycopg2 random import random import psycopg2 fname=[' ...

  5. PostgresQL中的NUlls first/last功能

    Nulls first/last功能简介Nulls first/last功能主要用于order by排序子句中,影响空值Null在排序结果中的位置.简单来说,Nulls first表示Null值在排序 ...

  6. PostgreSQL中的索引(一)

    引言 这一系列文章主要关注PostgreSQL中的索引. 可以从不同的角度考虑任何主题.我们将讨论那些使用DMBS的应用开发人员感兴趣的事项:有哪些可用的索引:为什么会有这么多不同的索引:以及如何使用 ...

  7. PostgreSQL中实现更新默认值(二)

    今天我们用表继承+触发器的方案,来实现表中的更新默认值.这也许是PostgreSQL里最佳的解决方案. 一. 创建一张表,作为父表 create table basic_update( t_updat ...

  8. 通过arcgis在PostgreSQL中创建企业级地理数据库

    部署环境: Win7 64位旗舰版 软件版本: PostgreSQL-9.1.3-2-windows-x64 Postgis-pg91x64-setup-2.0.6-1 Arcgis 10.1 SP1 ...

  9. include包含头文件的语句中,双引号和尖括号的区别是什么?

    include包含头文件的语句中,双引号和尖括号的区别是什么?  #include <> 格式:引用标准库头文件,编译器从标准库目录开始搜索 尖括号表示只在系统默认目录或者括号内的路径查找 ...

随机推荐

  1. Android IOS WebRTC 音视频开发总结(六十)-- 您为什么招不到适合的音视频人才

    本文主要介绍音视频行业招聘现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 有过音视频人才招聘经验的应该都深有 ...

  2. Android IOS WebRTC 音视频开发总结(五四)-- WebRTC标准之父谈WebRTC

    本文主要是整理自国内首届WebRTC大会上对Daniel的一些专访,转载必须说明出处,欢迎关注微信公众号blacker,更多说明详见www.rtc.help 说明:以下内容主要整理自InfoQ的专访, ...

  3. javaSE第二十一天

    第二十一天    276 1:字符流(掌握)    276 (1)字节流操作中文数据不是特别的方便,所以就出现了转换流.    276 (2)转换流其实是一个字符流    276 1:InputStr ...

  4. OpenJudge 2809 计算2的N次方

    1.链接地址: http://bailian.openjudge.cn/practice/2809/ 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 任意给定一个正整数N(N ...

  5. sql批量修改插入数据

    1.批量修改 select 'update 读者库 set 单位代码='''+新单位代码+''' where 单位代码='''+单位代码+'''' from 读者单位 ,)<'L' and is ...

  6. SQL SERVER中查询参数为空(null)时默认查询所有的实现

    最近在项目中碰到一个比较有意思的问题,网上查找了一些方法,在这里总结分享一下. 我们经常会碰到这样的场景:需要查询数据,有一些查询条件,但是查询的时候,我们希望在某个条件为空的时候,则不筛选这个条件, ...

  7. Ajax异步刷新局部页面的小李子

    看到下面那幅图没有,我们要的是当点击确定以后,根据条形码搜索出商品信息,并且异步刷新右边页面:

  8. Thinkphp 获取当前url

    $_GET['_URL_'] 获取整个url,返回值是数组 $Think.MODULE_NAME 获取当前class的名称 $Think.ACTION_NAME 获取当前action的方法名称

  9. php循环创建目录

    代码取自thinkphp中: function mk_dir($dir, $mod = 0777) { if(!is_dir($dir) || mkdir($dir, $mod)) { if(!mk_ ...

  10. Eclipse编码问题

    通常在Eclipse下,mac和windows编码是不一样的.如果含有中文java sources通常会出现乱码. 解决---小程序! import java.io.File; import java ...