BASH - اقتباس مفردة داخل اقتباس مزدوجة لSQL جملة WHERE

StackOverflow https://stackoverflow.com/questions/1411663

سؤال

وأنا في حاجة الى ارسال مقارنة تاريخ منسق بشكل صحيح جملة WHERE إلى برنامج على سطر الأوامر في باش.

وبمجرد أن يحصل داخل دعا البرنامج، يجب أن يكون جملة WHERE صالحة لأوراكل، وينبغي أن ننظر تماما مثل هذا:

highwater>TO_DATE('11-Sep-2009', 'DD-MON-YYYY')

وقيمة التاريخ هي في متغير. لقد حاولت مجموعة متنوعة من مجموعات من الأسعار والخطوط المائلة العكسية. بدلا من الخلط بين القضية وإعطاء أمثلة من أخطائي، وأنا على أمل للحصول على إجابة دقيقة البكر بلا شائبة من قبل dreck.

إذا كان لي أن الكتابة في بيرل، الاحالة وأود أن أعتقد تبدو هذه:

$hiwaterval = '11-Sep-2009';
$where = "highwater>TO_DATE(\'$hiwaterval\', \'DD-MON-YYYY\')";

وكيف يمكنني تحقيق التأثير نفسه في باش؟

هل كانت مفيدة؟

المحلول

hiwaterval='11-Sep-2009'

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

وإضافة اختياريا "تصدير" قبل وضع متغير النهائي إذا كان لها أن تكون ourside مقابل مرئية قذيفة الحالية.

نصائح أخرى

هل حاولت استخدام باستخدام القراد مزدوجة؟ مثل highwater> TO_DATE ( '' 11 سبتمبر 2009 ''، '' DD-MON-YYYY ''). مجرد اقتراح. لم أحاول ذلك.

ويمكنك تعيين حيث شرط من هذا القبيل:

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

و(مع backticks حول بيان الصدى - انهم لا تظهر في بلدي محرر هنا ...)

والذي يعمل مع شيل النموذج:

sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top