问题描述
|
无法弄清楚为什么我得到错误
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)),17) AS [TEST1]
您也可以使用ISNULL
或COALESCE
缩短代码。
SELECT SUBSTRING(CAST(COALESCE(l.assigned,l2.assigned) AS VARCHAR(100)),17)
AS [TEST1]
,您要投射到哪种数据类型?请参阅参考:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
您缺少\'as \'子句和数据类型。
,您需要将其强制转换为类型。
msdn:CAST和转换