设为首页 收藏本站
查看: 1016|回复: 0

[经验分享] T-SQL中常用的set语句

[复制链接]

尚未签到

发表于 2018-10-19 12:45:42 | 显示全部楼层 |阅读模式
  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,则在提交事务时将不关闭游标。
  9、SET DATEFIRST { number | @number_var }
  number | @number_var 是一个整数,表示一周的第一天,可以是下列值中的一个:


一周的第一天是
1
星期一
2
星期二
3
星期三
4
星期四
5
星期五
6
星期六
7(默认值,美国英语)
星期日  注释:
  使用 @@DATEFIRST 函数检查 SET DATEFIRST 的当前设置。
  SET DATEFIRST 的设置是在执行或运行时设置,而不是在分析时设置。
  权限:SET DATEFIRST 权限默认授予所有用户。
  10、SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH |  | @deadlock_var | @deadlock_intvar }
   ::= { -10 | -9 | -8 | … | 0 | … | 8 | 9 | 10 }
  控制在发生死锁情况时会话的反应方式。如果两个进程都锁定数据,并且直到其它进程释放自己的锁时,每个进程才能释放自己的锁,即发生死锁情况。
  参数:
  LOW
  指定当前会话为首选死锁牺牲品。Microsoft® SQL Server™ 自动回滚死锁牺牲品的事务,并给客户端应用程序返回 1205 号死锁错误信息。NORMAL
  %E6%8C%87%E5%AE%9A%E4%BC%9A%E8%AF%9D%E8%BF%94%E5%9B%9E%E5%88%B0%E9%BB%98%E8%AE%A4%E7%9A%84%E6%AD%BB%E9%94%81%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95%E3%80%82

  @deadlock_var

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-623667-1-1.html 上篇帖子: PL/SQL Developer 报错ORA-01861 下篇帖子: cloudstack: 使用服务器No usage server process running
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表