#sql #oracle #oracle11g
#sql #Oracle #оракул11g
Вопрос:
Мой запрос похож, но он не работает и выдает ошибку «Команда SQL не завершена должным образом», а строка: HDR.TRX_DT = DTL.TRX_DT И HDR.BU_TYPE = DTL.BU_TYPE И HDR.BU_CODE = DTL.BU_CODE И HDR.TRX_NO = DTL.TRX_NO И HDR.RGSTR_NO = DTL.RGSTR_NO И HDR.TRX_TYP_CD в (‘COS’) является значением в столбце . я хочу использовать это значение в предложении where инструкции select .Как вы это сделаете.пожалуйста, предложите
select * from mdbat.migration_ctrl_all where addition_condition='HDR.TRX_DT = DTL.TRX_DT AND HDR.BU_TYPE = DTL.BU_TYPE AND HDR.BU_CODE = DTL.BU_CODE
AND HDR.TRX_NO = DTL.TRX_NO AND HDR.RGSTR_NO = DTL.RGSTR_NO AND HDR.TRX_TYP_CD in ('COS')';
Комментарии:
1. Это из-за одинарных кавычек, которые вы использовали в
'COS'
. Экранируйте их как'COS'
2. @AlexLarionov в Oracle таким образом кавычки не экранируются. Вам нужны две одинарные кавычки или синтаксис q-quote .
Ответ №1:
Экранируйте '
разделитель строки COS, как сказал Алекс Ларионов. Но экранируйте каждый из них другим '
select * from mdbat.migration_ctrl_all where addition_condition='HDR.TRX_DT = DTL.TRX_DT AND HDR.BU_TYPE = DTL.BU_TYPE AND HDR.BU_CODE = DTL.BU_CODE
AND HDR.TRX_NO = DTL.TRX_NO AND HDR.RGSTR_NO = DTL.RGSTR_NO AND HDR.TRX_TYP_CD in (''COS'')';