虽然经常看到SET QUOTED_IDENTIFIER ON/OFF 这样的语句,但是不会太注意到底会有什么作用,或者说在什么情况下使用。看了联机帮助文档上得介绍,挺晕的,我打算自己通过实验,来总结一下这个选项的用法。
一般我们在创建一个表时,不管是QUOTED_IDENTIFIER ON还是OFF ,就是这么写得:
CREATE TABLE T(FIRST INT,SECOND INT)
但是在SET QUOTED_IDENTIFIER_ON 之后,你可以通过双引号把表名括起来,这么写:
CREATE TABLE "T"(FIRST INT,SECOND INT)
第一部分:SET QUOTED_IDENTIFIER ON
特别情况是在我们的表名是SQL SERVER 的保留字时,比如表名是:FROM关键字的时候,是不能写成这样的:
CREATE TABLE FROM(FIRST INT,SECOND INT)
运行结果:
必须得写成这样:
CREATE TABLE FROM(FIRST INT,SECOND INT)
运行结果:
注意:这里只能用双引号来括,不能用单引号。
这样看来确实有点作用。那么,这个单引号有什么作用呢?他得作用就是括住字符串,而双引号则不能括住字符串,看下面的例子:
应该是这么用:
如果说现在要输出的字符串里面有双引号怎么办呢?没关系,可以直接输出:
如果在要输出的字符串里面有单引号怎么办呢?只要写两个单引号就行了:
第二部分:SET QUOTED_IDENTIFIER OFF
这个时候,单引号和双引号都可以来括住字符串,同时也能括住对方,也就是单引号可以括住双引号,双引号也可以括住单引号:
最后总结一下:
1.在ON的情况下,双引号用来括住关键字和单引号(上面没有给出例子),单引号括住字符串和双引号。
2.在OFF的情况下,双引号和单引号都是用来括住字符串的,以及对方。
3.不管是在那种情况下,当双引号或者单引号要括住自己,比如输出 from"you 写成 "from""you"
from'you 写成 'from''you'.