как получить доступ к строке, содержащей оператор «=» и «И» в предложении where в oracle

#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'')';