مايكروسوفت جيت أحرف البدل: علامة النجمة أو النسبة المئوية؟

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

  •  23-08-2019
  •  | 
  •  

سؤال

ما هي البدل السليم متعدد الأحرف في المشغل المتثل في Microsoft Jet وما يؤثر الإعداد عليه (إن وجد)؟ أنا أؤيد تطبيق ASP القديم الذي يعمل على Microsoft Jet (على قاعدة بيانات Access) ويستخدم رمز٪ في المشغل المتثل، لكن لدي عميل لديه مشاكل في بيئته لأن الطابع٪ مفهوم بأنه منتظم الشخصية، وأفترض أن بطاقة البدل المتعدد الأحرف هي *. أيضا، أنا متأكد من أنه في الماضي قمت بتوكيل الطلب مع الاستعلامات باستخدام * بدلا من٪. أخيرا، يعمل Microsoft Access (كحدث) أيضا مع * وليس٪ (لكنني لست متأكدا مدى أهمية ذلك).

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

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

المحلول

الإجابة المستقيمة هي أن سلوك أحرف البدل يعتمد على وضع الاستعلام ANSI للواجهة المستخدمة.

يستخدم وضع الاستعلام ANSI-89 ("الوضع التقليدي") * حرف، وضع الاستعلام ANSI-92 (وضع توافق SQL Server ') يستخدم % حرف. هذه الأوضاع محددة مع ACE / JET وتحمل فقط تشابه تمرير إلى معايير ANSI / ISO SQL-89 و SQL-92.

يستخدم واجهة ADO (OLE DB) دائما وضع الاستعلام ANSI-92.

تستخدم واجهة DAO دائما وضع الاستعلام ANSI-89.

عند استخدام ODBC، يمكن تحديد وضع الاستعلام بشكل صريح عبر extendedansisql. علم.

يمكن أن تستخدم واجهة مستخدم MS Access، من إصدار 2003 فصاعدا، إما وضع الاستعلام، لذلك لا تفترض أنه واحد أو الآخر في أي وقت معين (على سبيل المثال لا تستخدم أحرف البدل المحددة من خلال وضع الاستعلام في قواعد التحقق من الصحة).

ACE / JET SQL Syntax لديه ALIKE الكلمة الأساسية، والتي تسمح أحرف وضع الاستعلام ANSI-92 (% و _) بغض النظر عن وضع الاستعلام للواجهة، ولكن لديه عيب بسيط لل ALIKE الكلمة الرئيسية لا يجري SQL-92 متوافق (ومع ذلك ALIKE لا يزال محمول للغاية). العيب الرئيسي، ومع ذلك، هو أنني أفهم ALIKE الكلمة الرئيسية غير مدعومة رسميا (على الرغم من أنني لا أستطيع أن أتخيل أنها سوف تختفي أو تغيير السلوك في أي وقت قريب).

نصائح أخرى

إذا كنت تستخدم DAO، فاستخدم علامة النجمة (وعلامة السؤال عن حامل رمز واحد). إذا كنت تستخدم ADO، استخدم علامة النسبة المئوية (وتستهي الأمر).

قد تجد هذا مفيدا:

http://msdn.microsoft.com/en-us/library/aa140104(office.10 ).aspx.

في شبكة تصميم الاستعلام ومع DAO تستخدم *، مع ADO و ASP، تستخدم٪

الوصول إلى Jet عبر ODBC، ليس من الواضح لي ما يجب استخدام أحرف البدل. كنت أفترض أن SQL SQL النفاثة الطبيعية (* /؟)، ولكن نظرا لأنني لا أستخدم بيانات النفاثة عبر ODBC، فلا أستطيع أن أقول.

داخل الوصول، كما يقول هذا المقال ريمو، في التعليمات البرمجية، يعتمد ذلك على واجهة الوصول إلى البيانات التي تستخدمها - ADO (لا ينبغي أن يستخدم أحد من الداخل من الداخل)، يمكنك استخدام٪ / _، بينما مع DAO (طبقة الواجهة الأصلية Jet )، يمكنك استخدام أحرف البدل الأصلية في Jet (* /؟).

هناك استثناء في الإصدارات الأحدث من Access تنفيذ SQL داخل الوصول. لا أعرف إذا كان تم الوصول إلى 2002 أو 2003 تم إضافةه، ولكن في الوقت الحاضر، يوجد وضع توافق ANSI SQL 92 الذي يمكنك تشغيله. إذا قمت بذلك، تصبح أحرف البدل٪ / _ بدلا من * /؟ ولكن القدرة على اختيار وضع ANSI ينطبق فقط داخل الوصول نفسه - كما أبلغنا OneDaywhen، يجب عليك اختيار مكتبات واجهة بيانات مختلفة لاستخدام أوضاع SQL المختلفة، مع ADO باستخدام 92 و DAO و ODBC 89.

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