سؤال

أحاول أن أفعل شيئا كهذا في التقدم 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top