2016-07-21 13 views
0

In SQL Server Management StudioGeben Sie die Mitarbeiter an, deren Nachnamen mit einem "L" beginnen

Geben Sie die Mitarbeiter an, deren Nachnamen mit einem "L" beginnen. Der Vorname und der Nachname werden in der gleichen Spalte namens Employeename und der Nachname ist das zweite Wort.

Das ist, was ich kam mit, aber funktioniert nur für Vornamen, da das erste Wort:

SELECT employeename 
FROM employee_T 
WHERE employeename LIKE 'L%' 

Was kann ich hinzufügen, damit es funktioniert?

+0

angenommen "Robin Hood" ist der Wert in employeename, dann Robin wird mein Vorname sein und Kapuze wird der Nachname sein. Geben Sie einige Eingabedaten und was Ausgabe sollte – Smart003

Antwort

1

jeden Eintrag, den Sie wollen Unter der Annahme, wie diese aussehen wird zum Spiel:

FirstName LastName 

dann alles, was Sie tun müssen, um einen Raum zu Ihrem LIKE Zustand ist hinzuzufügen:

SELECT employeename 
FROM employee_T 
WHERE employeename LIKE ' L%' 

Wenn einige Ihrer Daten Vielleicht haben Sie nur einen einzigen Namen oder drei Namen, dann sind alle Wetten für die oben genannten deaktiviert.

+0

Interessant, in SQL Server Ich denke, das müsste "Employeename LIKE '% L%" sein, d. h. ein Platzhalter vor dem Leerzeichen. – onedaywhen

+0

@onedaywenn Also sagst du, dass meine Antwort in MySQL wie erwartet funktioniert, aber nicht in SQL Server? In jedem Fall würde Ihre SQL Server-Lösung mehreren Leerzeichen vor dem "L" entsprechen, was möglicherweise nicht wünschenswert ist. –

+0

In SQL Server werden Ihnen nur Werte zugeordnet, bei denen das erste Zeichen ein Leerzeichen ist und das zweite ein 'L' ist, z. würde "{space} London" aber nicht "Jack {space} London" entsprechen. Ich weiß nicht, wie MySQL sich verhält, aber wenn es anders ist, würde ich überrascht sein (aber nur mild!) – onedaywhen

4

Sie können eine ' ' bevor die 'L%' Bedeutung hinzufügen, dass es nach vorherigen Worten:

select employeename 
from employee_T 
where employeename LIKE ' L%' 

Diese Option wird nicht funktionieren, wenn Sie Datensätze mit mehr als 2 Worte

Oder nutzen substring nach dem letzten Index von ' ' und tun Like auf diesem

Oder verwenden Sie dies, um den letzten Teil Ihres Namens zu erhalten und zu vergleichen, was Sie wollen:

select employeename 
from employee_T 
where SUBSTRING_INDEX(employeename, ' ', -1) LIKE 'L%' 
+1

Das ist natürlich die richtige Antwort. Falls Sie Namen wie "James Earl Jones" haben, würde eine einfache Regex-Übereinstimmung folgendermaßen aussehen: 'RTRIM (Employeename) REGEXP 'L [^] + $'' (Groß-/Kleinschreibung wird nicht berücksichtigt). – jirka