【发布时间】:2018-04-16 23:21:03
【问题描述】:
我目前正在为我的 MCSA 数据平台学习,我把以下问题弄错了,我正在寻找解释为什么我的答案是错误的,因为测试中的解释没有多大意义。
您有一个名为 AuditTrail 的表,用于跟踪对其他表中数据的修改。 AuditTrail 表由许多进程更新。输入到 AuditTrail 的数据可能包含格式不正确的日期时间值。您实现了一个从各个列中检索数据的流程,但有时该流程在无法将数据转换为有效的日期时间值时会引发错误。 您需要使用 en-US 格式的区域性代码将数据转换为有效的日期时间值。如果转换失败,则必须在 en-US 格式文化代码中返回空值。如果转换失败,必须在列输出中返回空值,并且转换过程不能抛出错误。
选项是 TRY_PARSE 函数 vs TRY_CONVERT 函数。
我选择了TRY_PARSE,但正确答案是TRY_CONVERT。
谁能澄清为什么TRY_PARSE 在这个例子中不是一个有效的选择,因为我不想在将来犯这个错误
【问题讨论】:
-
try_parse()与文化论点似乎是合适的。我个人会选择try_convert(),因为我比较熟悉。 -
是的,我选择它只是因为问题中指定了文化参数。不知道为什么它是一个不正确的选项。
-
这个问题在最好的情况下似乎措辞非常糟糕,并且在最坏的情况下故意误导/完全不正确。
TRY_CONVERT()甚至不允许您指定文化(仅一种样式),虽然它们可能对应(例如样式 101 和文化 en-us),但问题似乎是要求您指定文化代码...因此,如果有的话,TRY_PARSE()是这里唯一有效的答案(即使两个选项都可以达到相同的结果)。 -
感谢您的详细解释@ZLK。我希望他们在期末考试中不要有如此措辞不佳的问题。
-
如果我给出了你给出的答案并且他们将其标记为不正确,我会抱怨它明确表示你必须这样做
using the en-US format culture code。甚至在某些情况下 try_convert 会失败但 try_parse 会成功...例如,字符串tuesday, 04/17/18可以使用 try_parse(文化 en-us)正确解析,但使用 try_convert(任何样式 afaik)会返回 null。
标签: sql sql-server