1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

SQL Abfrage Groß Kleinschreibung filtern

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Smith1, 30 November 2019.

  1. Smith1

    Smith1 Benutzer

    Hallo zusammen,

    Tabelle: ARTIKEL
    Spalte: VKME
    Suchbegriff: Stück

    Ich möchte u.a. in der Tabelle Artikel und in der Spalte VKME nach dem Wort "Stück" suchen. Aktuell habe ich in der Spalte VKME folgende Varianten "Stück" und "STÜCK". Ich muss aber die Variante "Stück" gegen "STÜCK" ersetzen.

    Ich habe es bereits so versucht:

    WHERE VKME = 'Stück' (Hier gibt er mir alle aus, das gleiche mit like)
    StrComp kennt SQL anscheinend nicht

    Ich hoffe Ihr hab eine Lösung?!

    Grüße

    Smith1
     
  2. akretschmer

    akretschmer Datenbank-Guru

    mach einfach einen funktionale Index auf lower(VKME) und suche mit where vkme = lower(...).

    Was genau meinst der Dichter in dieser Zeile?

    Code:
    WHERE VKME = 'Stück' (Hier gibt er mir alle aus, das gleiche mit like)
    
     
  3. Smith1

    Smith1 Benutzer

    Mit der Abfrage WHERE VKME = lower(VKME)
    kommen trotzdem beide Varianten "Stück" und "STÜCK".

    Das funktioniert nicht.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Okay. Ich versteh leider nicht, was der Dichter mit

    Code:
    Aktuell habe ich in der Spalte VKME folgende Varianten "Stück" und "STÜCK". Ich muss aber die Variante "Stück" gegen "STÜCK" ersetzen.
    
    nun konkret meint. Daß bei lower(...) beide Varianten kommen ist mir klar, und das war so auch bewußt so gemacht. Aber vielleicht bin ich auch nur zu müde ...
     
  5. Smith1

    Smith1 Benutzer

    Es geht darum, in der Spalte VKME nach "Stück" zu filtern. Ich brauche nur die Einträge die genau so geschrieben sind. also Das S großgeschrieben und die folgenden Buchstaben ück kleingeschrieben. Diese Einträge möchte ich dann ändern können in "STÜCK" alles großgeschrieben.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    easy:

    Code:
    test=*# select * from smith1 ;
        t     
    ----------
     stück
     Stück
     stueck
     Stueck
     Eimer
     Flaschen
     Beutel
     Kisten
     Netze
    (9 rows)
    
    test=*# update smith1 set t = 'STÜCK' where t = 'Stück';
    UPDATE 1
    test=*# select * from smith1 ;
        t     
    ----------
     stück
     stueck
     Stueck
     Eimer
     Flaschen
     Beutel
     Kisten
     Netze
     STÜCK
    (9 rows)
    
    test=*#
    
     
  7. Smith1

    Smith1 Benutzer

    Könntest du mir sagen wie ich das genau eingeben muss?
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Hä? Steht doch da ;-) Allerdings: ich verwende eine wohl modernere Datenbank als Du ...
     
  9. Smith1

    Smith1 Benutzer

    Ich benutze Microsoft SQL Server 2012 Managment studio.

    Ich habe das so eingeben:

    test=*# select * from ARTIKEL ;
    t
    ----------
    stück
    Stück
    stueck
    Stueck
    Eimer
    Flaschen
    Beutel
    Kisten
    Netze
    (9 rows)


    Wäre schön wenn du mir das aufzeigen könntest wie es richtig ist? Ich stecke nicht so tief in der Materie. :)

    Tabelle: ARTIKEL
    Spalte: VKME

    ???
     
  10. akretschmer

    akretschmer Datenbank-Guru

    Hä? Was hast Du eingegeben? Das "test=*#" ist der prompt meiner DB, das ab "
    t
    ----------" dann die Ausgabe. Hast das so eingetippt? Nice ;-)
     
  11. Smith1

    Smith1 Benutzer

    Ja habe ich...:( Ich bin erst seit einem Jahr im SQL unterwegs.. Und das auch nur weil ich die Systemumstellung betreut habe und alle Daten aus dem alten ERP System rausgeholt habe und dem neuen ERP System zur Verfügung gestellt habe.
    Es wäre wirklich cool wenn du mir genau aufzeigen könntest, was ich einzugeben habe. :)
     
  12. akretschmer

    akretschmer Datenbank-Guru

    Okay:

    • select * from ARTIKEL ;
    • update smith1 set t = 'STÜCK' where t = 'Stück';
    • select * from smith1 ;


    Und erst:

    • create table smith1 ( t text);

    und dann:

    Code:
    copy smith1 from stdin;
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself, or an EOF signal.
    >> stück
    >> Stück
    >> stueck
    >> Stueck
    >> Eimer
    >> Flaschen
    >> Beutel
    >> Kisten
    >> Netze
    >> \.
    
    ohne die zweite und dritte Zeile und ohne dem ">> " je Zeile ;-)


    Hope that helps ;-)
     
  13. ukulele

    ukulele Datenbank-Guru

    In MSSQL kannst du Zeichenketten auch case sensitive verarbeiten. Das kann man für ganze Spalten/Tabellen/Datenbanken festlegen oder man bestimmt es in der Abfrage:
    Code:
    WHERE spalte COLLATE Latin1_General_CS_AS LIKE '%GMBH%' COLLATE Latin1_General_CS_AS
    In diesem Fall wird die Collation sowohl auf die Spalte als auch auf den Such-String angewandt, das _CS steht für case sensitive.
     
    Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden