none
LOWER mit Substring funktioniert nicht RRS feed

  • Frage

  • Hallo,

    lt. MSDN Library kann ich eine Zeichenfolge mit Großbuchstaben in Kleinbuchstaben umwandeln. Mit

    LOWER (SUBSTRING([Name], 2, 15] wandele ich alle Buchstaben ab der zweiten Stelle um. Beispiel: COLOR -> Color

    Bei mir kommt als Ergebnis: olor, der erste Buchstabe "C" wird abgeschnitten. Was mache ich falsch?

    Vielen Dank,

    Gruß Jürgen

    Montag, 13. Februar 2012 21:02

Antworten

Alle Antworten

  • Hallo Jürgen,

    weil Dir SUBSTRING durch den Beginn (2) das erste Zeichen wegschneidet.

    Verwende z. B.  LOWER (SUBSTRING([Name], 1, 15] ) um die ersten (bis zu 15) Zeichen in Kleinbuchstaben zu erhalten,
    alternativ kannst Du auch LEFT verwenden, wenn Du die ersten Zeichen verwenden willst.

    Gruß Elmar

    Montag, 13. Februar 2012 21:16
  • Am 13.02.2012 schrieb juergen_ks:

    LOWER (SUBSTRING([Name], 2, 15] wandele ich alle Buchstaben ab der zweiten Stelle um. Beispiel: COLOR -> Color

    Bei mir kommt als Ergebnis: olor, der erste Buchstabe "C" wird abgeschnitten. Was mache ich falsch?

    Sieh dir dieses Beispiel an, das hilft bestimmt. ;)
    http://www.sqlinfo.net/sqlserver/sql_server_function_substring.php

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    • Als Antwort markiert juergen_ks Montag, 13. Februar 2012 21:32
    Montag, 13. Februar 2012 21:22
  • Hallo Elmar,

    in der MSDN Library steht "In diesem Beispiel werden alle Zeichen in der Color-Eingabespalte in Kleinbuchstaben konvertiert, außer dem ersten Zeichen. Wenn Color gleich YELLOW ist, wird als Ergebnis "Yellow" zurückgegeben. Weitere Informationen finden Sie unter SUBSTRING (SSIS)."

    Das sollte auch funktionieren....

    Gruß Jürgen

    Montag, 13. Februar 2012 21:28
  • Hallo Winfried,

    perfekt, danke - das funktioniert!

    UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))

    Gruß Jürgen

    Montag, 13. Februar 2012 21:32
  • Am 13.02.2012 schrieb juergen_ks:

    in der MSDN Library steht "In diesem Beispiel werden alle Zeichen in der Color-Eingabespalte in Kleinbuchstaben konvertiert, außer dem ersten Zeichen. Wenn Color gleich YELLOW ist, wird als Ergebnis "Yellow" zurückgegeben. Weitere Informationen finden Sie unterSUBSTRING (SSIS) <http://msdn.microsoft.com/de-de/library/ms137541%28v=sql.90%29.aspx>."

    In dem von dir geposteten Link findet sich dieses Beispiel:
    In diesem Beispiel werden zwei Zeichen eines Zeichenfolgenliterals
    zurückgegeben, und zwar beginnend mit Zeichen 4. Als Ergebnis wird
    "ph" zurückgegeben.

    SUBSTRING("elephant",4,2)

    Substring ist mit Mid in VB(A) zu vergleichen und tut was es soll. Ein
    Teilstring wird verarbeitet, das von mir gepostete Beispiel zeigt
    recht deutlich, wie das funktionieren kann. Somit ist das Ergebnis von
    dir im ersten Posting also völlig korrekt.

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Montag, 13. Februar 2012 22:19
  • Sorry, ich meinte natürlich

    http://msdn.microsoft.com/en-us/library/ms137756.aspx

    Hier ist LOWER aufgeführt mit dem Beispiel COLOR.

    Danke für den Hinweis!

    Gruß
    Jürgen

    Montag, 13. Februar 2012 22:33
  • Hallo Jürgen,

    auch dort steht ... außer dem ersten Zeichen (deutsch)

    Die SUBSTRING Funktion von SSIS verhält sich grundsätzlich so wie das Transact-SQL Äquivalent.
    Gleiches gilt für LOWER und andere.

    Gruß Elmar

    Dienstag, 14. Februar 2012 07:56
  • Hallo Jürgen,
    ich habe jetzt mal Deine Verbesserung und den Hinweis auf die falsche Beschreibung als Community Inhalt bei der deutschen Version des Artikels gepostet:
    http://msdn.microsoft.com/de-de/library/ms137756.aspx

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    Dienstag, 14. Februar 2012 08:13
    Beantworter
  • Hallo Christoph,

    ich muss zugeben, den Satz hatte ich glatt überlesen.

    Wobei auch die englische (Original-)Fassung den gleichen Fehler enthält,

    Gruß Elmar

    Edit: Auch engl. Seite ergänzt.
    • Bearbeitet Elmar Boye Dienstag, 14. Februar 2012 08:54
    Dienstag, 14. Februar 2012 08:45