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:“,”附近的语法不正确的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 附近的语法不正确

sql的vba代码中''附近的语法不正确

SQL 命令错误:“4”附近的语法不正确 [重复]

SQL错误关键字'user'附近的语法不正确[重复]

SQL create语句自动递增附近的语法不正确

SQL 创建视图,显示视图,关键字“SELECT”附近的语法不正确