BASH - SQL Where句の二重引用符内の単一引用符
質問
bash のコマンド ラインで、適切にフォーマットされた日付比較 WHERE 句をプログラムに送信する必要があります。
呼び出されたプログラムの内部に入ると、WHERE 句は Oracle に対して有効になり、次のようになります。
highwater>TO_DATE('11-Sep-2009', 'DD-MON-YYYY')
日付値は変数内にあります。引用符とバックスラッシュのさまざまな組み合わせを試してみました。問題を混乱させたり、私の間違いの例をあげたりするのではなく、汚物に汚されていない、純粋で正確な答えを期待しています。
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')"
オプションで" export"を追加します現在のシェルの外側に表示される場合は、最終的な変数設定の前。
他のヒント
ダブルティックを使用してみましたか? highwater> TO_DATE( '' 2009年9月11日 ''、 '' DD-MON-YYYY '')のように。ただの提案。試していません。
次のように where 句を割り当てることができます。
export WHERECLAUSE=`echo "where highwater >TO_DATE('11-Sep-2009', 'DD-MON-YYYY')"`
(echo ステートメントの周囲にバッククォートがあります - ここのエディターには表示されません...)
これは次の形式のシェル スクリプトで動作します。
sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
所属していません StackOverflow