【问题标题】:Set default value in case of error in update SQL statement更新 SQL 语句出错时设置默认值
【发布时间】:2015-07-01 15:49:58
【问题描述】:

Sql Server 2012 中有没有办法在列上设置默认值,例如:

convert(datetime,'1900/1/01', 120)

万一更新语句失败:

update Table1 set [UpdDate] = CONVERT(datetime, [UpdDate0])

例如update语句在UpdDate0遇到奇怪的值(英文或中文字母),无法转换为datetime,失败。

在这些情况下,我希望能够设置我提到的默认值,甚至是空白值,任何东西都比错误要好。

感谢您的任何建议!

【问题讨论】:

  • 您可以使用 try_convert。类似于下面给出的 SELECT CASE WHEN TRY_CONVERT(float, 'test') IS NULL THEN 'Cast failed' ELSE 'Cast succeeded' END AS Result;

标签: sql-server datetime sql-server-2012


【解决方案1】:

您可以使用 try_convert。像下面给出的东西

SELECT CASE WHEN TRY_CONVERT(float, 'test') IS NULL THEN 'Cast failed' ELSE 'Cast succeeded' END AS Result;

【讨论】:

  • 工作就像一个魅力!非常感谢!
  • Prashant,在某行转换失败后,您的代码是否将所有后续(以下)记录转换为“Cast fail”?
  • 您的意思是,如果您尝试转换一个参数并使用该参数更新所有列,那么它会
猜你喜欢
  • 1970-01-01
  • 2014-05-06
  • 2010-11-04
  • 2013-04-08
  • 2019-10-03
  • 2020-10-23
  • 2017-04-07
相关资源
最近更新 更多