2017-09-18 3 views
-1

Ich bin auf SQL Server 2012, Ich versuche, eine SELECT Erklärung zu schreiben, die LEFT() und RIGHT() Funktionen verwendet ein ProductName angezeigt werden, wenn der dritte Brief vom Ende des Produktnamen ein bestimmte Buchstabe ist.
Beispiel der dritte Brief ist ein 'a'SQL-Select-Statement

+3

Was haben Sie bisher versucht? – jhpratt

+2

Datenstichprobe und erwartete Ergebnisse hinzufügen. Auch die Abfrage brauchen Sie Hilfe mit – Horaciux

+0

SELECT Produkt-ID, ProductName, UnitPrice, \t LINKS (ProductName, LEN (Produktname) - 3) –

Antwort

1

Die einfachste Optio hier ist like zu verwenden:

select ProductName from Products where ProductName like '%a__' 

% ein Platzhalter ist eine beliebige Anzahl von Zeichen übereinstimmt, und _ entspricht einem einzelnen Zeichen. like '%a__' bedeutet der drittletzte Buchstabe ist ein a.
Arbeitsbeispiel: http://www.sqlfiddle.com/#!6/6b479/8

Wenn Sie left und right verwenden möchten, sollten Sie verwenden:

select ProductName from Products 
where len(ProductName)>=3 AND left(right(ProductName,3),1)='a' 

Arbeitsbeispiel: http://www.sqlfiddle.com/#!6/6b479/2

left(right(ProductName,3),1) bedeutet: die letzten drei Buchstaben nehmen, und nehmen Sie nehmen der erste Brief von ihnen. Wir überprüfen auch auf len(ProductName)>=3, um sicherzustellen, dass es mindestens drei Buchstaben gibt, andernfalls können wir kurze Produktnamen zurückgeben, die mit einer a beginnen.