BASH- SQL WHER 절단에 대한 이중 견적 내부의 단일 견적
문제
Bash의 명령 줄에있는 프로그램에 절차를 적절히 형식화 된 날짜 비교를 보내야합니다.
호출 프로그램에 들어가면 Where 절은 Oracle에 유효해야하며 다음과 같아야합니다.
highwater>TO_DATE('11-Sep-2009', 'DD-MON-YYYY')
날짜 값은 변수입니다. 나는 따옴표와 백 슬래시의 다양한 조합을 시도했습니다. 문제를 혼란스럽게하고 실수의 예를 제시하기보다는 Dreck에 의해 깨끗하지 않은 깨끗한 정확한 대답을 기대하고 있습니다.
내가 Perl에 그것을 써야한다면, 과제는 다음과 같이 생각할 것입니다.
$hiwaterval = '11-Sep-2009';
$where = "highwater>TO_DATE(\'$hiwaterval\', \'DD-MON-YYYY\')";
Bash에서 동일한 효과를 어떻게 달성합니까?
해결책
hiwaterval='11-Sep-2009'
where="highwater > TO_DATE('$hiwaterval', 'DD-MON-YYYY')"
선택적으로 최종 변수 설정 전에 "내보내기"를 추가하십시오.
다른 팁
이중 진드기를 사용하여 사용해 보셨습니까? Highwater> to_date ( ''11-sep-2009 '', ''dd-mon-yyyy '')처럼. 단지 제안입니다. 나는 그것을 시도하지 않았다.
다음과 같은 WHERE 절을 할당 할 수 있습니다.
export WHERECLAUSE=`echo "where highwater >TO_DATE('11-Sep-2009', 'DD-MON-YYYY')"`
(에코 진술 주위에 백 틱이 있으면 - 여기에 편집자에 표시되지 않습니다 ...)
양식의 쉘 스크립트와 함께 작동합니다.
sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
제휴하지 않습니다 StackOverflow