Ошибка синтаксиса SQL concat_ws
Я попытался запустить следующий код 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"")))
1 ответ
Двойные кавычки являются проблемой. Вы должны удвоить их или избежать их.
В зависимости от того, что вы намеревались, вы можете написать:
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 включен, строковые литералы могут заключаться в кавычки только в одинарных кавычках, поскольку строка, заключенная в двойные кавычки, интерпретируется как идентификатор.
Если вы намеревались избежать двойной кавычки, то обратите внимание, что способ избежать символов состоит не в удвоении их, а в добавлении к ним обратной косой черты. Однако двойные кавычки не нужно экранировать, если вы используете одинарные кавычки для разграничения вашей строки.