我需要在bash的命令行上向程序发送格式正确的日期比较WHERE子句。

一旦进入被调用的程序,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')"

可选择添加“导出”在最终变量设置之前,如果要在当前shell中显示它。

其他提示

您是否尝试过使用双蜱?喜欢highwater> TO_DATE('''11-Sep-2009'',''DD-MON-YYYY'')。只是一个建议。我还没试过。

您可以像这样分配where子句:

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

(在echo语句周围有反引号 - 它们没有出现在我的编辑器中......)

使用以下形式的shell脚本:

sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top