“您必须在'%'运算符的右侧提供值表达式。”在查询语句错误
问题描述:
我的PowerShell脚本包含查询 -“您必须在'%'运算符的右侧提供值表达式。”在查询语句错误
# This code defines the search string in the database table
$SQLQuery = "SELECT bug_id,
bug_status,
resolution,
short_desc,
DATE_FORMAT(deadline, "%m/%d/%Y")
FROM bugs
WHERE (bug_status IN ('RESOLVED', 'VERIFIED', 'INTEST')
AND deadline BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 30 DAY)
)
OR (bug_status IN ('RESOLVED', 'VERIFIED', 'INTEST')
AND deadline BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND
CURDATE())
ORDER BY deadline ASC
"
在运行该脚本,它失败在下面的错误日期格式部分 -
You must provide a value expression on the right-hand side of the '%' operator.
At line:5 char:32
+ DATE_FORMAT(deadline, "% <<<< m/%d/%Y")
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedValueExpression
如何逃避这些任何建议字符,但同时,它应该影响将要在MySql数据库上触发的实际查询?
答
您在双引号字符串中使用双引号。非转义的嵌套双引号提前终止字符串,因此PowerShell将%
解释为运算符,而不是字符串的一部分。
试着用单引号代替嵌套双引号,让你的字符串适当多行字符串:
$SQLQuery = @"
SELECT bug_id,
...
DATE_FORMAT(deadline, '%m/%d/%Y')
...
"@
第一种方式工作,但它的影响。因此我省略查询的最后期限列结果完全。 第二种方法没有帮助,因为我有其他where子句用单引号括起来。 'bug_status IN('RESOLVED','VERIFIED','INTEST')' – SoftwareTestingEnthusiast 2015-01-26 22:57:16
查询是否在'mysql'客户端运行时工作? – 2015-01-26 23:11:31
是的,查询在MySql客户端中执行时工作正常。 – SoftwareTestingEnthusiast 2015-01-26 23:12:38