sql-server:“,”附近的语法不正确
Posted
技术标签:
【中文标题】sql-server:“,”附近的语法不正确【英文标题】:sql-server: Incorrect syntax near ',' 【发布时间】:2017-11-03 12:20:59 【问题描述】:我在执行以下查询时收到此语法错误。任何建议如何解决它?
编辑
查询是动态创建的,运行的查询大小>8000...
',' 附近的语法不正确。
SELECT TS.* , --comma added
(SELECT CONVERT(DATETIME, [4501001], 103) AS 'AG_VISDATE.U1.[4501001]'
FROM form.AG_VISDATE
WHERE pid = TS.pid
AND COALESCE(visid, '') = 'U1'),
(SELECT [4501004] AS 'AG_VISDATE.U1.[4501004]'
FROM form.AG_VISDATE
WHERE pid = TS.pid
AND COALESCE(visid, '') = 'U1')
我在TS.*
之后添加了“,”,但现在我收到以下错误:
消息 102,级别 15,状态 1,行 1 ',' 附近的语法不正确。
消息 102,级别 15,状态 1,行 1 “TS”附近的语法不正确。
【问题讨论】:
你确定这是整个查询吗? 尝试在TS.*
之后添加逗号。子查询在执行时必须返回一个标量值。
【参考方案1】:
可能是皈依者。看来您想将日期转换为字符串。
DECLARE @test date = '2017-10-13'
SELECT CONVERT(char(10), @test, 103) AS 'AG_VISDATE.U1.[4501001]'
【讨论】:
【参考方案2】:这些语句都不起作用
(SELECT CONVERT(DATETIME, [4501001], 103) AS 'AG_VISDATE.U1.[4501001]'
FROM form.AG_VISDATE
WHERE pid = TS.pid
AND COALESCE(visid, '') = 'U1')
(SELECT [4501004] AS 'AG_VISDATE.U1.[4501004]'
FROM form.AG_VISDATE
WHERE pid = TS.pid
AND COALESCE(visid, '') = 'U1')
因为 WHERE 子句将失败,因为 TS 没有在任何地方定义
两个语句可以重写为一个
SELECT CONVERT(DATETIME, [4501001], 103) AS 'AG_VISDATE.U1.[4501001]',
[4501004] AS 'AG_VISDATE.U1.[4501004]'
FROM form.AG_VISDATE
WHERE pid = <SOMETHING> AND
COALESCE(visid, '') = 'U1'
目前尚不清楚您要做什么。你最好包括你的架构、测试数据和你想要的输出
【讨论】:
抱歉,我的语句的语法有错误。请立即尝试 还删除了我原来的 cmets,因为它们对您编辑的代码毫无意义以上是关于sql-server:“,”附近的语法不正确的主要内容,如果未能解决你的问题,请参考以下文章