错误“关键字 'CONVERT' 附近的语法不正确”

Posted

技术标签:

【中文标题】错误“关键字 \'CONVERT\' 附近的语法不正确”【英文标题】:Error "Incorrect syntax near the keyword 'CONVERT'"错误“关键字 'CONVERT' 附近的语法不正确” 【发布时间】:2018-12-07 13:43:36 【问题描述】:

我有下面的 T SQL 语句,但不断收到错误

关键字“CONVERT”附近的语法不正确

我哪里错了?

DECLARE @NSQL2 NVARCHAR(MAX)
DECLARE @SOURCETABLE NVARCHAR(MAX)

SELECT TOP 1 @SOURCETABLE = TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE 'IN_PRODUCT________________%' 
  AND TABLE_TYPE = 'BASE TABLE'

SET @NSQL2 = 'UPDATE [' + @SOURCETABLE + '] SET OnSale = '''+ CONVERT(nvarchar(MAX),OnSale, 112)+'''

EXEC SP_EXECUTESQL @NSQL2

【问题讨论】:

单引号字符串为'''',即4个单引号。但是,您在 SET @NSQL2 的最后部分只使用了三个 按原样,您的语句无法工作,无论是否转义。 OnSale 的列应该来自哪里?您是否尝试将列更改为新类型?这需要比仅仅坚持CONVERT更多的努力。 【参考方案1】:

试试这个:

    SET @NSQL2 = 'UPDATE ' + QUOTENAME(@SOURCETABLE) 
                 + ' SET OnSale = CONVERT(nvarchar(10),OnSale, 112)'

【讨论】:

可能不会给出语法错误,但这应该实现什么? 使用列 OnSale = CONVERT(nvarchar(10),OnSale, 112) 更新某些表。作者为什么要它?谁知道【参考方案2】:

我使用以下方法让它工作:

SET @NSQL = 'UPDATE [' + @SOURCETABLE + '] SET OnSale =  CONVERT(nvarchar,CAST(OnSale AS DATETIME), 120)'

【讨论】:

【参考方案3】:

您是否打算将 Convert 语句作为文字作为字符串的一部分?

SET @NSQL2 = 'UPDATE [' + @SOURCETABLE + '] SET OnSale = CONVERT(nvarchar(MAX),OnSale, 112)'

【讨论】:

以上是关于错误“关键字 'CONVERT' 附近的语法不正确”的主要内容,如果未能解决你的问题,请参考以下文章

Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思

PHP错误处理