none
SQL Alle Namen von A bis L RRS feed

  • Frage

  • Hallo zusammen,

    Ich habe eine Spalte 'Nachname' und möchte alle Datensätze, deren Nachname mit 'C' beginnt, bis 'L'.  (Oder 'K' bis 'O')

    Ich denke es gibt etwas schlaueres als alle Buchstaben C,D,E,F,G,H,... auf zureichen.

    Kann mir jemand sagen wie so ein SQL Statement aussieht?

    Gruss Peter

    Donnerstag, 12. Februar 2015 09:35

Antworten

  • Hallo Peter,

    das kann man über ein Pattern Match erreichen, siehe Pattern Matching in Search Conditions

    ;WITH sourceData AS
       (SELECT 'Anton' AS Name
        UNION ALL SELECT 'Christa'
        UNION ALL SELECT 'Leon'
        UNION ALL SELECT 'Peter')
    SELECT *
    FROM sourceData
    WHERE Name like '[C-L]%'

    liefert nur Christa und Leon


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert peter haus Donnerstag, 12. Februar 2015 09:50
    Donnerstag, 12. Februar 2015 09:44

Alle Antworten

  • Hallo Peter,

    das kann man über ein Pattern Match erreichen, siehe Pattern Matching in Search Conditions

    ;WITH sourceData AS
       (SELECT 'Anton' AS Name
        UNION ALL SELECT 'Christa'
        UNION ALL SELECT 'Leon'
        UNION ALL SELECT 'Peter')
    SELECT *
    FROM sourceData
    WHERE Name like '[C-L]%'

    liefert nur Christa und Leon


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert peter haus Donnerstag, 12. Februar 2015 09:50
    Donnerstag, 12. Februar 2015 09:44
  • Danke Dir.

    Hatte es auch versucht.
    Habe jedoch bei meinen versuchen leider etwas falsch gemacht.

    Gruss Peter

    Donnerstag, 12. Februar 2015 09:50
  • Hallo Peter,

    eine Alternative zu Olafs Lösung wäre auch folgendes:

    SELECT  *
      FROM sourceData
      where ASCII(LEFT(Nachname,1)) > XX AND ASCII(LEFT(Nachname,1)) < YY


    Hier wird der Ascii-Wert des ersten Buchstaben mit einem Min und Max-Wert verglichen und alles ausgegeben, was dazwischen liegt.

    Hierbei ist allerdings natürlich genaue Kenntnis der Ascii-Werte nötig.

    Gruß

     Claudius



    Donnerstag, 12. Februar 2015 09:54
  • Hallo Claudius,

    das Statement könnte man mit einem BETWEEN etwas vereinfachen. Allerdings besteht dann immer noch das Problem, dass nur Groß- oder nur Kleinbuchstaben, je nach den angegebenen Werten, erfasst werden. Man müsste also letztendlich mit einer weiteren OR Verknüpfung für die jeweils andere Schreibweise arbeiten.

    Daher würde ich die von Olaf gepostete Variante auch bevorzugen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 12. Februar 2015 12:13
    Moderator