zoukankan      html  css  js  c++  java
  • 数据库 SQL SQL转义

    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  ‘!’

  • 相关阅读:
    大战设计模式【5】—— 工厂方法模式
    通过spring抽象路由数据源+MyBatis拦截器实现数据库自动读写分离
    大战设计模式【4】—— 简单工厂模式
    大战设计模式【3】—— 装饰模式
    大战设计模式【2】—— 观察者模式
    大战设计模式【1】—— 策略模式
    回顾:maven配置和常用命令整理
    idea properties文件unicode码问题
    Nginx学习笔记
    tomcat添加context方式部署web应用
  • 原文地址:https://www.cnblogs.com/ixenos/p/6294028.html
Copyright © 2011-2022 走看看