سؤال

وأود أن أسمع إذا كان أي من لديك فكرة القيام بما يلي: لدي طاولة واحدة تحتوي على بعض cardefinitions [معرف] [الشركة] [وضع]، وهذا يمكن على سبيل المثال تكون أودي 100، فورد مستان الخ وبعد ذلك يكون حقل آخر وهو سلسلة تحتوي على كل من السيارة والنموذج، وهذا يمكن أن يكون "فورد موستانج 2.5T"، وبعد ذلك تحتاج إلى العثور على ID الصحيح من cardefinition. أنا على الرغم من القيام

@CarDefintion = "Ford Mustang 2.5T"
Select top 1 CarDefinitionId 
  from dbo.CarModelDefinition 
 where CONTAINS(Model,@Cardefinition) 
   AND Contains(Company, @Cardefinition)

ولكن منذ نموذج + الشركة ليست فريدة من نوعها أحصل على هذا الخطأ: "لا يمكن استخدام CONTAINS أو FREETEXT المسند على طاولة أو فهرستها عرض" dbo.CarModelDefinition 'لأنه ليس النص الكامل المفهرسة " هل لديها فكرة عن كيف يمكن حل هذا؟

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

المحلول

والبحث في سلسلة مع الأعمدة بأحرف البدل القيم باستخدام LIKE.

@CarDefintion = "Ford Mustang 2.5T"
Select top 1 CarDefinitionId 
  from dbo.CarModelDefinition 
 where @Cardefinition like '%' + model + '%'
   AND @Cardefinition like '%' + company + '%';

و+ هي المشغل سلسلة السلسال.

نصائح أخرى

@CarDefintion = "Ford Mustang 2.5T"

Select top 1 CarDefinitionId 
  from dbo.CarModelDefinition 
 where @Cardefinition LIKE Model OR @Cardefinition LIKE Company 

ويجبCarDefintion تكون سلسلة؟ هل من الممكن أن تجعل من مجموعة من نموذج والشركة التي كنت قد ثم الرجوع في SQL الخاصة بك؟

وإذا تعذر ذلك يمكنك أن تكون متأكدا تماما من أن هناك من لا وضعت للتو "موستانج 2.5T" بدلا من "فورد موستانج 2.5T"؟ إذا كنت يمكن أن يكون متأكدا تماما ثم واحد طريقة للقيام بذلك هي لتقسيم بمسافات ثم القيام بسلسلة من عمليات البحث على كل قطعة في محاولة لتحديد موقعه.

DECLARE @CarDefintion VARCHAR(25)
        SET @CarDefintion = 'Ford Mustang 2.5T'

DECLARE @Make  VARCHAR(25)
DECLARE @Model VARCHAR(25)
SELECT @Make  = SUBSTRING(@CarDefintion,0,CHARINDEX(' ',REVERSE(@CarDefintion)))
SELECT @Model = LTRIM( REPLACE(@CarDefintion,@Make,'')) 

--SELECT @Make,@Model

        SELECT TOP 1 * 
          FROM dbo.CarModelDefinition 
         WHERE Model   = @Model
           AND Company = @Make

ويحتوي على () وظائف هي للبحث في النصوص، والتي من المرجح أن لا تستخدم (وبالتالي الأخطاء)

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