2009-09-11 45 views
0

我需要發送一個格式正確的日期比較WHERE子句的命令行上的程序bash。BASH - 雙引號內SQL單引號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同樣的效果?

回答

3
hiwaterval='11-Sep-2009' 

where="highwater > TO_DATE('$hiwaterval', 'DD-MON-YYYY')" 

可選地,在最終變量設置之前添加「導出」,如果它在當前shell中是可見的。

+0

它的工作就像一個魅力。引用是一件奇怪的事情。 – Geordie 2009-09-11 16:28:07

0

您是否嘗試過使用雙蜱?像highwater> TO_DATE(''2009年9月11日'',''DD-MON-YYYY'')。只是一個建議。我沒有嘗試過。

0

您可以指定where子句是這樣的:

export WHERECLAUSE=`echo "where highwater >TO_DATE('11-Sep-2009', 'DD-MON-YYYY')"` 

(與周圍的回聲聲明反引號 - 他們不是在這裏展示在我的編輯器了......)

,其與工作外殼腳本的形式:

sqlplus /nolog <<EOS 
connect $USERNAME/[email protected]$DB 
select * from test $WHERECLAUSE 
; 
exit 
EOS