2016-04-19 2 views
0

Ich habe nicht viel Sachkenntnis in SQL. Ich möchte die Datensätze aus der Tabelle mit den folgenden Kriterien filtern.SQL zum Filtern von Datensätzen mit einem Teil des Wertes ist gleich

Ich mag die Datensätze in dem unten stehenden Beispiel mit abzuscheiden als „KLMNP03“ zeigen und „UVXYZ03“. gibt es Ähnliche Datensätze mit letztem Zeichen wie 03 und 04, aber ich will nur nur 03 am Ende mit den Datensätze herauszufiltern

zum Beispiel:

col1 
--------- 
ABCDE03 
ABCDE04 
KLMNP03 
LMNOP03 
LMNOP04 
UVXYZ03 
+0

Aber Sie wollen nicht ABCDE03, auch mit 03 endet? – jarlh

Antwort

0

Ich bin nicht sicher, was Ihre Anwendung Fall ist, aber das ist ziemlich ineffizient. Es ist besser, ganze Spalten zu verwenden. Auf jedem Fall zu tun, was Sie fragen nach:

SELECT * 
FROM yourTable 
WHERE col1 NOT LIKE ('%03') 

Dies alles zurück, die nicht 03 am Ende hat.

% ist ein Wildcard-Zeichen und steht für eine beliebige Anzahl von Zeichen vor den normalen Zeichen. Sie können etwas ähnliches mit dem Zeichen _ tun, das ein einzelnes zufälliges Zeichen darstellt.

In SQLServer zumindest. Es kann auch in anderen RDBMs

+0

Vielen Dank für Ihre Antwort LordBaconPants, Ich möchte nur die Datensätze, die 03 und keine entsprechenden 04 Datensätze mit den ersten 5 Zeichen sind die gleichen. – better

0

anders sein, wenn Sie die Ergebnisse mit nur 03 am Ende wollen, benutzen Sie diese Abfrage:

SELECT *FROM yourTable WHERE col1 LIKE ('%03') 

Diese Ergebnisse angezeigt werden Folgende:

  1. ABCDE03
  2. KLMNP03
  3. LMNOP03
  4. UVXYZ03
+0

Es tut mir leid, ich glaube, ich habe meine Frage nicht korrekt formuliert. Ich möchte diejenigen Datensätze auflisten, die '03' am Ende und ohne '04' parallel Datensatz (in der gleichen Spalte) in der Tabelle haben. – better

+0

Hallo, Irgendeine Idee, wie diese Aufzeichnungen filtern können? – better

+0

was meinst du mit "und ohne '04' parallel Datensatz (in der gleichen Spalte) in der Tabelle". –

0

Es tut mir leid, ich glaube, ich richtig meine Frage nicht gerahmt hat.

Ich möchte diese Datensätze aufzuzählen, die ‚03‘ am Ende haben und mit aus ‚04‘ parallel Satz (in der gleichen Spalte) in der Tabelle.

0

Try this:

WITH cte AS(
SELECT col, 1 AS r FROM #tbl 
), 
cte2 AS(
    SELECT CASE 
      WHEN (LEAD(col) OVER (ORDER BY r) NOT LIKE '%04' OR LEAD(col) OVER (ORDER BY r) IS NULL)AND col LIKE '%03' 
       THEN col 
      ELSE 
       NULL 
     END AS col 
    FROM cte t 
) 

SELECT * FROM cte2 WHERE col IS NOT NULL 

ersetzen #tbl mit Ihrem Tabellennamen und col auf Ihre Spaltennamen.

+0

Tolle Arbeit, es hat funktioniert. –

Verwandte Themen