2016-06-15 17 views
0

Ich habe ein Problem mit einer Extraktionsabfrage.Extraktionsabfragen mit variablen letzten Teil des Suchbegriffs

Ich möchte alle Datensätze extrahieren, die mit genau einem Namen beginnen.

Das Problem:

  • Nicht immer das Ende des Namens ist diese Erweiterung;
  • Wenn sie vorhanden sind, haben sie keine feste Länge.

Beispiel:

TabNames

id | Name 

1 | Mike 
2 | Mike Nell-1 
3 | Mike-2 
4 | Robert-1 
5 | Mike Rio-NN 
6 | Mike-Orio-2 
..... 

Namen gesucht: 'Mike'

Gewünschtes Ergebnis:

Mike, Mike-2 

Wenn Sie interessiert sind, verwende ich SQL Server.

Wie kann ich tun?

+0

Warum Mik löst Mike, Mike-2? Warum hat es sich auch nicht zu Mike Nell -1 etc. gelöst? –

+0

Du hast recht Priyanshi Gel! Es war mein Fehler. Der Beispielname ist "Mike" –

+0

Dies ist ein Forum für die Programmierung von Fragen. Um dies zu einer Programmierfrage zu machen, müssten Sie die Regeln für das gewünschte Ergebnis vollständig definieren. Dann könnten wir Ihnen bei der Programmierung helfen. Im Moment ist dies ein "Was sollten meine Geschäftsregeln sein?" Frage, die nicht zum Thema gehört. –

Antwort

0

Sie können dies mit FOR XML tun. Sie müssen die Tabellennamen, Spaltennamen und die Where-Anweisung in beiden SELECT-Anweisungen aktualisieren. Dies ist eine Variation dieser Concatenation Script.

SELECT DISTINCT 
    SUBSTRING(
     (
      SELECT ', '+ T1.Name AS [text()] 
      FROM dbo.TabNames T1 
      WHERE T1.Name LIKE 'Mike%' 
      ORDER BY T1.Name 
      FOR XML PATH ('') 
     ), 3, 8000) AS Names 
FROM 
    dbo.TabNames T2 
WHERE 
    T2.Name LIKE 'Mike%'