“ cast”附近的语法不正确

| 无法弄清楚为什么我得到错误   substring(cast(在分配给IS的情况下   不为空则分配为ELSE   l2.assigned END),0,17)as [TEST1] 更新: 我尝试调整的原始行如下...想要删除该转换,因为我不希望在日期时间使用该格式:   ,否则为substring(convert(varchar,   强制转换(当l.assigned不为NULL时的情况   THEN l.assigned ELSE l2.assigned END   as datetime),126),0、17)end)as   varchar(20))为[TEST1] 我也尝试过我忘记提及的   substring(cast(在分配给IS的情况下   不为空则分配为ELSE   l2。指定为日期时间END),0、17)   作为[TEST1] 错误:关键字\'as \'附近的语法不正确。     
已邀请:
由于未指定此处详细说明的数据类型,因此会收到错误消息。语法如下所示:
select cast(\'1/1/1911\' as datetime)
您可以更简单地使用isull(或合并)和left来表达查询。请记住,除非您要查找特定的日期时间格式,否则可以执行以下操作:
select left(isnull(l.assigned,l2.assigned),17) as [TEST1]
    
CAST
需要一个似乎缺失的
AS datatype
。 例如
SELECT SUBSTRING(CAST(
         CASE WHEN \'foo\' IS NOT NULL THEN \'foo\' ELSE \'FOO\' END AS VARCHAR(100))
       , 0, 17) AS [TEST1]
您也可以使用
ISNULL
COALESCE
缩短代码。
SELECT SUBSTRING(CAST(COALESCE(l.assigned,l2.assigned) AS VARCHAR(100)), 0, 17) 
                                                                       AS [TEST1]
    
您要投射到哪种数据类型?请参阅参考: http://msdn.microsoft.com/en-us/library/ms187928.aspx 您缺少\'as \'子句和数据类型。     
您需要将其强制转换为类型。 msdn:CAST和转换     

要回复问题请先登录注册