在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这些是 SQL-92 设置语句,使 mssql 遵从 SQL-92 规则。
在sqlserver2005或SQL2008数据库项目中,创建视图或存储过程的时候往往有以下开头语句:
GO SET QUOTED_IDENTIFIER ON GO ……………… ……………… GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO 这些是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 SQL-92 规则。
SQL Server联机丛书关于ANSI_NULLS里有这样一个代码示例,给出了直观的效果,我添加了输出提示,如下: CREATE TABLE t1 (a INT NULL) INSERT INTO t1 values (NULL) INSERT INTO t1 values (0) INSERT INTO t1 values (1) GO -- Print message and perform SELECT statements. PRINT 'Testing default setting' DECLARE @varname int SELECT @varname = NULL SELECT * FROM t1 WHERE a = @varname --结果为空 SELECT * FROM t1 WHERE a <> @varname --结果为空 SELECT * FROM t1 WHERE a IS NULL --结果为NULL GO -- SET ANSI_NULLS to ON and test. PRINT 'Testing ANSI_NULLS ON' SET ANSI_NULLS ON GO DECLARE @varname int SELECT @varname = NULL SELECT * FROM t1 WHERE a = @varname --结果为空 SELECT * FROM t1 WHERE a <> @varname --结果为空 SELECT * FROM t1 WHERE a IS NULL --结果为NULL GO -- SET ANSI_NULLS to OFF and test. PRINT 'Testing SET ANSI_NULLS OFF' SET ANSI_NULLS OFF GO DECLARE @varname int SELECT @varname = NULL SELECT * FROM t1 WHERE a = @varname --结果为NULL SELECT * FROM t1 WHERE a <> @varname --结果为0,1 SELECT * FROM t1 WHERE a IS NULL --结果为NULL GO -- Drop table t1. DROP TABLE t1 从上面代码的运行效果来看: PS:其实,实际使用过程中,我们并没有考虑ANSI_NULLS是被设置为ON还是False,我们对空值的处理都是IS NULL 或者 IS NOT NULL |
请发表评论