有人能给我解释一下下面的表达式有什么问题吗?我相信我用CONVERT 126正确地转换了我的日期,我的引号用char 39正确地转义了,但是我可能错了。
T-SQL:
DECLARE @end2 DATETIME2 = GETDATE();
DECLARE @test2 nvarchar(200) = N'SELECT * FROM OPENQUERY(x, '
+ char(39) + 'SELECT OBJID FROM SALE WHERE MODIFIED >= '
+ CHAR(39) + CONVERT(nvarchar(24),@end2,126)
+ char(39) + char(39) + ')';
PRINT @test2;
EXEC (@test2);
打印输出:
select * from openquery(x, 'SELECT OBJID FROM SALE
WHERE MODIFIED >= '2023-01-19T11:55:21.1233'')
错误:
消息102,级别15,状态1
"2023"附近的语法不正确。
尝试了不同的格式,铸造等,我不能使用EXEC x..sys.sp_executesql
,因为x
是火鸟,而不是另一个SQL Server。
1条答案
按热度按时间0qx6xfy61#
你可以用另一个字符来转义
'
,比如''
,但是你需要双转义,也就是说你的最终字符串需要有双单引号才能在你的动态SQL中转义,这就意味着要进行大量的转义,比如结果是: