BASH - 双引号内SQL单引号Where子句
问题描述:
我需要发送一个格式正确的日期比较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同样的效果?
答
hiwaterval='11-Sep-2009'
where="highwater > TO_DATE('$hiwaterval', 'DD-MON-YYYY')"
可选地,在最终变量设置之前添加“导出”,如果它在当前shell中是可见的。
答
您是否尝试过使用双蜱?像highwater> TO_DATE(''2009年9月11日'',''DD-MON-YYYY'')。只是一个建议。我没有尝试过。
答
您可以指定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
它的工作就像一个魅力。引用是一件奇怪的事情。 – Geordie 2009-09-11 16:28:07