我对761进行“测试”测试,看到一个问题,如果没有正确定义字段的值,那么我该怎么用,如果转换失败,我需要返回NULL,没有提到任何特定类型的数据,**没有关于该文化代码。只需要返回NULL,我就同时选择了TRY_PARSE
和TRY_CONVERT
。他们都做**if fails then returns NULL value**
,所以我认为他们都是有效的答案,但这是单选题,本次测试的正确答案是TRY_PARSE
。这背后是否有任何逻辑,或者它不是构造合理的问题。这是进行钻探测试的第三方供应商。
全部发送。 M
-------------------------------------------------- --Q78
declare @FakeDate varchar(100) = '38383838', @FakeInt VARCHAR(10) = 'xyz'
SELECT try_convert(DATE, @FakeDate),try_convert(INT, @FakeInt)
SELECT try_parse(@FakeDate AS date), TRY_PARSE(@FakeInt AS INT)
(No column name) (No column name)
NULL NULL
(No column name) (No column name)
NULL NULL
答案 0 :(得分:2)
首先:setCount() => {
// your code
}
,TRY_CAST()
和TRY_CONVERT()
将在不区分文化或格式/样式代码< / em>。这将隐式依赖于系统的设置。至少对于日期/时间,这是从不做。
在您的情况下,出于以下原因,我建议使用TRY_PARSE()
:
TRY_PARSE()
和CONVERT
是多功能功能。您可以将任何内容投射到任何内容(只要投射有效)。 CAST
将使用投射图来决定可以明确投射的内容。 CAST
的功能大致相同,但是通过样式参数提供了更多控制。这是反对CONVERT
的另一个原因:
我的结论是:对我来说,正确的答案是TRY_CONVERT
(主要是因为需要采取的操作是解析字符串)。但是问题确实很严重,并且与现实世界中的任何情况都相去甚远...
答案 1 :(得分:1)
仅将TRY_PARSE用于从字符串转换为日期/时间和数字 类型。
如果您的问题中未指定数据类型,则需要选择TRY_CONVERT
函数。
如果要转换的类型是日期和数字,请使用TRY_PARSE
函数。