无法弄清楚为什么我会收到错误
substring(cast(CASE WHEN l.assigned IS NOT NULL然后l.assigned ELSE l2.assigned END),0,17)as [TEST1]
更新:
我试图调整的原始行是以下...想要取出转换因为我不想要日期时间的格式:
,else substring(convert(varchar, cast(例如,当l.assigned IS NOT NULL时 然后我分配了ELSE l2.assigned END as datetime),126),0,17)end)as varchar(20))为[TEST1]
我还试过这个,我忘了提及
substring(cast(CASE WHEN l.assigned IS NOT NULL然后l.assigned ELSE l2.assigned as datetime END),0,17) 作为[TEST1]
错误:关键字'as'附近的语法不正确。
答案 0 :(得分:1)
CAST
需要一个似乎缺失的AS datatype
。
e.g。
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]
答案 1 :(得分:1)
您收到错误,因为您未将数据类型指定为详细here。语法如下:
select cast('1/1/1911' as datetime)
您可以使用isnull(或coalesce)和left更简单地表达您的查询。请记住,除非您正在寻找特定的日期时间格式,否则您可以执行以下操作:
select left(isnull(l.assigned,l2.assigned),17) as [TEST1]
答案 2 :(得分:0)
答案 3 :(得分:0)
您需要将其强制转换为类型。