BASH - одинарная кавычка внутри двойной кавычки для предложения SQL Where - PullRequest
1 голос
/ 11 сентября 2009

Мне нужно отправить корректно отформатированное предложение сравнения WHERE даты программе в командной строке в bash.

Как только он попадает внутрь вызываемой программы, предложение 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?

Ответы [ 3 ]

3 голосов
/ 11 сентября 2009
hiwaterval='11-Sep-2009'

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

опционально добавьте «export» перед окончательной настройкой переменной, если она должна быть видима с текущей оболочки.

0 голосов
/ 11 сентября 2009

Вы можете назначить предложение 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
0 голосов
/ 11 сентября 2009

Вы пробовали использовать двойные галочки? Как highwater> TO_DATE ('' 11-Sep-2009 '', '' DD-MON-YYYY ''). Просто предложение. Я не пробовал это.

...