错误“关键字 '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:未处理的内部错误