SQL转义

@author ixenos

前言


类似文件分隔符在不同系统的实现不同,我们需要一个中间的转义字符来作为接口,各厂商再具体实现

而SQL的转义语法主要为了支持各种数据库普遍支持的特性,但各数据库使用的是与数据库相关的语法变体,因此,将转义语法翻译为特定数据库的语法是JDBC驱动程序的任务之一

所应用到的特性


1.日期和时间字面常量

a)     用d、t、ts来表示DATE、TIME、TIMESTAMP的值

b)     d  ‘2008-02-02’

c)     t  ’22:22:22’

d)     ts  ‘2008-02-02 22:22:22’

2.调用标量函数

a)     标量函数,指仅返回一个值的函数(数据库中包含大量的函数,但各数据库间名字有差异)

b)     fn  left(?, 20)

c)     fn  user()

3.调用存储过程

a)     在数据库中执行的用数据库相关的语言编写的过程,要调用存储过程需要使用CALL转义,其中在存储过程无参数时就不用加括号,应该用=号来捕获存储过程的返回值

b)     call  PROC1(?, ?)

c)     call  PROC2

d)     call  ? = PROC3(?)

4.外连接

a)    左连接就是以左为主,右边的记录可能为空, 右连接就是以右为主左边的可能为空

b)     LEFT  OUTER  JOIN左连接

c)     RIGHT  OUTER  JOIN 右连接

d)     FULL  OUTER  JOIN 可以同时返回这两类没有任何匹配的信息

e)     示例:SELECT * FROM oj Books LEFT OUTER JOIN Publishers ON Books.Publisher_Id = Publisher.Publisher_Id

f)      这个查询是左连接,包含了Publisher_Id字段在Publisher表中没有任何匹配的书(显然,这些书来自左边的)

g)     其他连接同理!

5.在LIKE子句中的转义字符

a)     _和%字符在LIKE子句中的特殊含义

b)     目前没有统一的标准,只能使用escape来定义转义符

c)     示例:WHERE  ?  LIKE  %!_%  escape  ‘!’

数据库 SQL SQL转义的更多相关文章

  1. 数据库之sql语句汇总20180616

    /*******************************************************************************************/ 一.SQL简 ...

  2. 【数据库】 SQL 通配符

    [数据库] SQL 通配符 1. % : 替代一个或多个字符 2. _ : 仅替代一个字符 3. [] : 字符列中的任何单一字符 4. [^charlist] 或者 [!charlist]  : 不 ...

  3. 淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树

    OceanBase是阿里巴巴集团自主研发的可扩展的关系型数据库,实现了跨行跨表的事务,支持数千亿条记录.数百TB数据上的SQL操作. 在阿里巴巴集团下,OceanBase数据库支持了多个重要业务的数据 ...

  4. 《淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树》

    淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树   曾经的学渣 2014-06-05 18:38:00 浏览1455 云数据库Oceanbase   OceanBase是 ...

  5. 数据库语言sql

    数据库语言SQL SQL的形式 交互式SQL 一般DBMS都提供联机交互工具 用户可直接键入SQL命令对数据库进行操作 由DBMS来进行解释 嵌入式SQL 能将SQL语句嵌入到高级语言(宿主语言) 使 ...

  6. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  7. 如何转换SQL Server 2008数据库到SQL Server 2005

        背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...

  8. jdbc向各种数据库发送sql语句

    1.有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事.换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Info ...

  9. SQL---Chapter01 数据库和SQL

    数据库类型: 层次数据库(Hierarchical Database, HDB) 数据通过层次结构(树形结构)的方式表示出来. 关系型数据库(Relational Database, RDB) 使用专 ...

随机推荐

  1. stack(数组模拟) POJ 2559 Largest Rectangle in a Histogram

    题目传送门 /* 题意:宽度为1,高度不等,求最大矩形面积 stack(数组模拟):对于每个a[i]有L[i],R[i]坐标位置 表示a[L[i]] < a[i] < a[R[i]] 的极 ...

  2. robot framework 入门

    obot framework 入门 2012-12-23 12:47:16 分类: LINUX     其实我不喜欢动不动就框架,动不动就架构,整出一坨专业术语搞的玄而又玄,让人云山雾绕,我想做的事情 ...

  3. jmeter(九)分布式测试

    Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误.为了让jmeter工具 ...

  4. jmeter(八)HTTP属性管理器HTTP Cookie Manager、HTTP Request Defaults

    Test Plan的配置元件中有一些和HTTP属性相关的元件:HTTP Cache Manager.HTTP Authorization Manager.HTTP Cookie Manager.HTT ...

  5. vue.js学习参考手册

    参考手册 示例:www.51siyuan.cn/161.html

  6. java synchronized(object/this)的 区别

    1.synchronized(object) package test.thread; import java.io.IOException; import org.junit.Test; /* * ...

  7. 获取请求服务器传输协议http or https

    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PO ...

  8. oracle 执行跟踪

    一.sql_trace的介绍 --打开trace文件设置,把sql trace设置为true,就会在udump目录中增加一个trc文件.alter session set sql_trace=true ...

  9. vue2.0 vue.set()

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. arp - Linux的ARP核心模块

    描述 这个核心协议模块实现RFC826中定义的 Address Resolution Protocol [译注:即TCP/IP的第三层到第一层的地址转换协议],用于在直接相连的网络中换第二层硬件地址和 ...