مثل المشغل للتقدم DB SQL
-
19-09-2019 - |
سؤال
أحاول أن أفعل شيئا كهذا في التقدم SQL (هذا ليس بعد الحوار!)
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
ومع ذلك فإن التقدم لا يدعم مشغلا مثل. INSTR
يبدو أنه قد يقوم بهذه المهمة، لكنه تمديد التقدم غير مدعوم على DB أنا أستخدمه. هل هناك طريقة أخرى لتحقيق هذا باستخدام وظائف ODBC القياسية؟
شكرًا
المحلول
لا يوجد LIKE
المشغل في التقدم 4GL. (هناك LIKE
الكلمة الأساسية، ولكن يتم استخدامها لشيء مختلف.) بدلا من ذلك تحتاج إلى استخدام MATCHES
أو CONTAINS
العاملين. لم أستخدم أبدا واجهة SQL للتقدم ولكن قد تكون هي نفسها.
حتى تتمكن من المحاولة:
SELECT
CASE WHEN code MATCHES '*foo*' THEN 'Y' ELSE 'N' END as foo
FROM
bar
ملحوظة - MATCHES
الاستخدامات *
لحضور البدل بدلا من %
.
أو:
SELECT
CASE WHEN code CONTAINS 'foo' THEN 'Y' ELSE 'N' END as foo
FROM
bar
نصائح أخرى
وجدت فقط هذا السؤال وإلى أي شخص قد لا يزال لديه مشكلة في ذلك أقترح استخدام عميل Squirrelrelsql، والذي يتيح لك كتابة بناء جملة SQL بنسبة 100٪ تقريبا نحو قاعدة التقدم. مثل المدرجة
يمكنك محاولة مع التطابقات (نفس بناء الجملة من مثل) وربما يعمل.
ما إصدار التقدم الذي تستخدمه 10.0؟ 10.1؟ 10.2؟
هل تستخدم SQL-89 المضمنة من داخل جلسة 4GL أو هل تستخدم SQL-92 عبر اتصال ODBC / JDBC؟ يبدو أنك تستخدم SQL-92 نظرا لأنك تشير إلى "برامج التشغيل" والأدوية.
في أي حال، لا يوجد مثل SQL. هناك رقص وتحديد موقع قد تفعل ما تريد رغم ذلك.
المتطابقات متاحة فقط ككلمة رئيسية 4GL. لاستخدامه في SQL، ستحتاج إلى استخدام SQL-89 SQL-89 مضمن ولكن لا أحد في عقله الصحيح سيقوم بمقدار SQL داخل جلسة 4GL. إنه موجود فقط كاختبار اختيار تسويقي وهو وسيلة غير مستخدمة تماما لكتابة رمز 4GL.