T-SQL中寻常的set语句
发布时间:2022-02-25 14:29:15 所属栏目:MySql教程 来源:互联网
导读:T-SQL中常用的set语句: 1、SET ANSI_DEFAULTS { ON | OFF } 示例: SET ANSI_DEFAULTS ON; DBCC USEROPTIONS; SET ANSI_DEFAULTS OFF; 设置 SET ANSI_DEFAULTS ON 并使用 DBCC USEROPTIONS 语句显示受影响的设置。 2、SET ANSI_NULLS { ON | OFF } T-SQL 支
T-SQL中常用的set语句: 1、SET ANSI_DEFAULTS { ON | OFF } 示例: SET ANSI_DEFAULTS ON; DBCC USEROPTIONS; SET ANSI_DEFAULTS OFF; 设置 SET ANSI_DEFAULTS ON 并使用 DBCC USEROPTIONS 语句显示受影响的设置。 2、SET ANSI_NULLS { ON | OFF } T-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE。 ANSI_NULLS 设置不影响包含 NULL 的联接列。联接列中包含 NULL 的行不是结果集的一部分。 当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。 即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。 当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵守 ISO 标准。 使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。 使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。 此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。 也就是说,设置为on是你只能这样写:where xx is null 或者 where xx is not null,而设置为off时可以写成这样:where xx = null 或者 where xx <> null 如果 SET ANSI_NULLS ON 那么 SQL 语句中, 判断 非空的写法, 要修改为:WHERE 字段 IS NULL。SET ANSI_NULLS ON 以后, NULL = NULL 将 返回 false. 3、SET ANSI_PADDING { ON | OFF } 当设置为ON时,不剪裁字符值中插入到varchar列的尾随空格和二进制值中插入到varbinary列的尾随零。不将值按列的长度进行填充。当设置为OFF时,剪裁varchar列的尾随空格和varbinary列的尾随零。该设置只影响新列的定义。 ANSI_PADDING为ON时,将允许空值的Char(n)和binary(n)列填充到列长;而当ANSI_PADDING为OFF时,将剪裁尾随空格和零,始终将不允许空值的Char(n)和binary(n)列填充到列长。 4、SET ANSI_WARNINGS { ON | OFF } ANSI_WARNINGS 可以影响下列情况: 设置为 ON 时,如果聚合函数(如 SUM、AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 或 COUNT)中出现空值,将生成警告消息。 设置为 OFF 时,不发出警告。 设置为 ON 时,被零除错误和算术溢出错误将导致回滚语句,并生成错误消息。 设置为 OFF 时,被零除错误和算术溢出错误将导致返回空值。 如果在 character、Unicode 或 binary 列上尝试执行 INSERT 或 UPDATE 操作,而这些列中的新值长度超出最大列大小,则将出现被零除错误和算术溢出错误导致返回空值的行为。 如果 SET ANSI_WARNINGS 为 ON,则根据 ISO 标准,将取消 INSERT 或 UPDATE 操作。 字符列的尾随空格和二进制列的尾随零都将被忽略。 设置为 OFF 时,数据将剪裁为列的大小,并且语句执行成功。 5、SET ARITHABORT { ON | OFF } 在查询执行过程中发生溢出或被零除错误时终止查询。 如果 SET ARITHABORT 为 ON,则这些错误情况将导致查询或批处理终止。如果在事务内发生错误,则回滚事务。如果 SET ARITHABORT 为 OFF 并且发生了这些错误之一,则显示一条警告消息,并给算术运算的结果赋以空值。 说明 如果 SET ARITHABORT 和 SET ARITHIGNORE 都没有设置,则 Microsoft® SQL Server™ 将在执行查询后返回 NULL 和一条警告信息。 如果 SET ARITHABORT 为 OFF 并且在对表达式的求值过程中 INSERT、DELETE 或 UPDATE 语句遇到算术错误(溢出、被零除或域错误),SQL Server 将插入或更新 NULL 值。如果目标列不可为空,则插入或更新操作失败并且用户收到错误信息。 如果 SET ARITHABORT 或 SET ARITHIGNORE 为 OFF,并且 SET ANSI_WARNINGS 为 ON,则当遇到被零除或溢出错误时,SQL Server 仍返回错误信息。 SET ARITHABORT 的设置是在执行或运行时设置,而不是在分析时设置。 在计算列或索引视图上创建或操作索引时,SET ARITHABORT 必须为 ON。如果 SET ARITHABORT 为 OFF,计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。有关计算列上的索引视图和索引所必需的 SET 选项设置的更多信息,请参见 SET 中的"使用 SET 语句时的注意事项"。 权限: SET ARITHABORT 权限默认授予所有用户。 6、SET ARITHIGNORE { ON | OFF } 控制在查询执行过程中是否从溢出或被零除错误返回错误信息。 SET ARITHIGNORE 设置仅控制是否返回错误信息。不论该设置是什么,Microsoft® SQL Server™ 都将在包含溢出或被零除错误的计算中返回 NULL。可以使用 SET ARITHABORT 设置确定是否终止查询。该设置不影响在 INSERT、UPDATE 和 DELETE 语句执行过程中发生的错误。 如果 SET ARITHABORT 或 SET ARITHIGNORE 为 OFF,并且 SET ANSI_WARNINGS 为 ON,则当遇到被零除或溢出错误时,SQL Server 仍返回错误信息。 SET ARITHIGNORE 的设置是在执行或运行时设置,而不是在分析时设置。 权限 SET ARITHIGNORE 权限默认授予所有用户。 7、SET CONCAT_NULL_YIELDS_NULL { ON | OFF } 将串联结果视为 Null 还是空字符串值。 當是NULL或空字符串時控制是否連接字符串值。 例如: 将 SET 选项 CONCAT_NULL_YIELDS_NULL 设置为 ON 之后,表达式 'abc' + NULL 返回的值是 NULL。 而将 CONCAT_NULL_YIEDS_NULL 设置为 OFF 之后,该表达式得出的结果却是 'abc'。 8、SET CURSOR_CLOSE_ON_COMMIT { ON | OFF } 表示提交事务时服务器将不会关闭游标。 When SET CURSOR_CLOSE_ON_COMMIT is ON, this setting closes any open cursors on commit or rollback in compliance with ISO.如果 SET CURSOR_CLOSE_ON_COMMIT 为 ON,此设置将遵从 ISO 标准,在提交或回滚时关闭所有打开的游标。 如果 SET CURSOR_CLOSE_ON_COMMIT 为 OFF,则在提交事务时将不关闭游标。 (编辑:上海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |