هل من الممكن استخدامها لاحتواء للحصول على نتائج لأكثر من عمود واحد؟

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

سؤال

النظر في الجدول التالي:

الناس

  • الاسم الأول Nvarchar (50)
  • اسم العائلة NVARCHAR (50)

دعونا نفترض في الوقت الحالي أن يكون هذا الجدول مؤشر نص كامل على كلا الأعمدة.

دعونا نفترض أنني أردت أن أجد كل الأشخاص الذين يدهموا "جون سميث" في هذا الجدول. يبدو الاستعلام التالي طريقة عقلانية تماما لإنجاز هذا:

SELECT * from People p
INNER JOIN CONTAINSTABLE(People,*,'"John*" AND "Smith*"')

لسوء الحظ، هذا لن يرجع أي نتائج، على افتراض أنه لا يوجد سجل في الناس الجدول الذي يحتوي على كل من "John" و "Smith" إما في أعمدة الاسم الأول أو العائلة. لن تتطابق مع سجل مع "John" في عمود الاسم الأول، و "Smith" في عمود NredName أو العكس.

سؤالي هو: كيف يحقق أحد ما أحاول فعله أعلاه؟ يرجى النظر في أن المثال أعلاه مبسطة. الجدول الحقيقي الذي أعمل معه لديه عشرة أعمدة والإدخال الذي أتلقه هو سلسلة واحدة تقسيمها بناء على قواطع الكلمة القياسية (الفضاء، اندفاعة، إلخ)

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

المحلول 2

إليك ما انتهى به الأمر:

قد يكون المثال الذي أعطيته أعلاه مبكئا بعض الشيء. في التطبيق الفعلي، يكون مؤشر النص الكامل في الواقع على طريقة عرض يمثل انضماما من طاولتين. ميزة واحدة من هذا هو أن مخطط الرأي يمكن أن يكون مستقلا عن الجدول (الجدول) الذي تم بناؤه من.

لاستخدام مثال (المبسط) الخاص بي من أعلاه، لدي جدول يشبه هذا:

الناس

  • الاسم الأول Nvarchar (50)
  • اسم العائلة NVARCHAR (50)

الرأي، الذي بدا الفهرس بالفعل من، مثل هذا:

الناس

  • الاسم الأول Nvarchar (50)
  • اسم العائلة NVARCHAR (50)

لحل المشكلة، قمت بتعديل مخطط الرأي بحيث يكون هناك الآن عمود واحد (بالإضافة إلى مفتاح) يحتوي على محتويات الجدول (الجدول) بأكمله يمثله العرض:

الناس

  • الاسم (الاسم الأول + '' '+ اسم العائلة)

يجب إعادة بناء كتالوج النص الكامل، بالطبع، مع مراعاة المخطط الجديد للعرض، ولكن تم إجراء جميع التغييرات على مستوى قاعدة البيانات، مما يعني عدم وجود تغييرات على رمز التطبيق. اضطررت إلى إجراء بعض التعديلات على طريقة العرض لمعالجة الأعمدة التي قد تكون لها قيم فارغة، نظرا للاغتزال غير المتزامن مع أي شيء = NULL.

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