2009-09-11 70 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