代码开头经常会出现这几行代码:
USE [BMSCV2OutputWeekly] #指明要使用的数据库
GO #当脚本运行到go语句时,就会直接对go语句之前的代码进行批处理操作。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
一、SET ANSI_NULLS ON
表示对等于(=)或不等于(<>)空值(NULL)进行判断时,遵从 SQL-92 规则。
SQL-92规则中,在对等于(=)或不等于(<>)空值(null)进行比较时,取值为false。
(1)
#如果字段[name]中含有空值
SELECT * FROM STUDENT WHERE NAME=NULL;
(2)
#如果字段[name]中含有非空值
SELECT * FROM STUDENT WHERE NAME<>NULL;
二、SET ANSI_NULLS OFF
表示对等于(=)或不等于(<>)空值(NULL)进行判断时,不遵从 SQL-92 规则。
(1)
#如果字段[name]中含有空值
SELECT * FROM STUDENT WHERE NAME=NULL;
(2)
#如果字段[name]中含有非空值
SELECT * FROM STUDENT WHERE NAME<>NULL;
三、SET QUOTED_IDENTIFIER ON
表示使用引用标识符,标识符可以用双引号分隔,但是,文字必须用单引号分隔。
select "ID","name","score" from Stuscore where name='张三';
select id,name,score from Stuscore where name='张三';
三、SET QUOTED_IDENTIFIER OFF
表示标识符不能用双引号分隔,否则标识符会被当做字符串值来返回,不再是字符来返回。而且,文字部分必须用单引号或双引号分隔。
(1)
select "ID","name","score" from Stuscore where name='张三' OR name="小红";
(2)
select id,name,score from Stuscore where name='张三' or name="小红";