双引号是问题所在。您应该将它们解开或逃脱它们。
根据您的意图,您可以编写:
where c_policy_effective_date = concat_ws('-', policy_effective_date_yyyy,
(lpad(policy_effective_date_mm, 2, '"00"')),
(lpad(policy_effective_date_dd, 2, '"00"')))
或者,最有可能(左填充零):
where c_policy_effective_date = concat_ws('-', policy_effective_date_yyyy,
(lpad(policy_effective_date_mm, 2, '0')),
(lpad(policy_effective_date_dd, 2, '0')))
请注意,如果您用单引号引用字符串,则它更符合标准。从文档:
如果ANSI_QUOTES
启用 SQL 模式,则字符串文字只能在单引号内引用,因为双引号内引用的字符串被解释为标识符。
如果您打算转义双引号,请注意转义字符的方法不是将它们加倍,而是在它们前面加上反斜杠。但是,如果您使用单引号来分隔字符串,则双引号不需要转义。