我试图运行以下concat_ws代码,但出现语法错误。这个sql代码有什么问题?
select count(policy_number)
from resp_party
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, '"00"')),
(lpad(policy_effective_date_dd, 2, '"00"')))
或者,最有可能(在左边空白处加上0):
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')))
注意,如果用单引号引用字符串,则更符合标准。从the docs开始:
如果启用了
ANSI_QUOTES
SQL模式,则字符串文本只能在单引号内引用,因为双引号内引用的字符串被解释为标识符。如果你想逃避双引号,那么请注意,逃避字符的方法不是加倍,而是用反斜杠预加它们。但是,如果使用单引号分隔字符串,则双引号不需要转义。
关于mysql - SQL concat_ws语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36143424/