SQL concat_ws 语法错误
SQL concat_ws syntax error
我尝试 运行 以下 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"')))
或者,最有可能(用零填充左侧):
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 开始:
If the ANSI_QUOTES
SQL mode is enabled, string literals can be quoted only within single quotation marks because a string quoted within double quotation marks is interpreted as an identifier.
如果您打算对双引号进行转义,请注意转义字符的方法不是将它们加倍,而是在它们前面加上反斜杠。但是,如果您使用单引号分隔字符串,则双引号不需要转义。
我尝试 运行 以下 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"')))
或者,最有可能(用零填充左侧):
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 开始:
If the
ANSI_QUOTES
SQL mode is enabled, string literals can be quoted only within single quotation marks because a string quoted within double quotation marks is interpreted as an identifier.
如果您打算对双引号进行转义,请注意转义字符的方法不是将它们加倍,而是在它们前面加上反斜杠。但是,如果您使用单引号分隔字符串,则双引号不需要转义。