Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL-Bug bei CONCAT/LOWER?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL-Bug bei CONCAT/LOWER?

    Hallo,

    folgendes Statement:
    Code:
    SELECT 
      CONCAT('ABC', 1234),
      LOWER(
      CONCAT(
        'ABC',
        1234
      )
    )
    Ausgabe:
    Code:
    ABC1234  	ABC1234
    Die zweite Spalte sollte eigentlich abc1234 liefern, tut es aber nicht, sondern ABC1234. Ist das ein Bug von CONCAT(), oder von LOWER()?

    Wenn ich die Zahl in Anführungszeichen tippe oder type-caste funktioniert es.
    Code:
    SELECT
    LOWER(CONCAT('ABC', '1234')),
    LOWER(CONCAT('ABC', CAST(1234 AS CHAR)))
    Aber in der MySQL-Doku zu CONCAT steht eigentlich, dass es keine Probleme mit Zahlen hat.
    "Mein Name ist Lohse, ich kaufe hier ein."


  • #2
    Stimmt, sieht wie ein Bug aus (hier MySQL 5.1.44),
    aber CONCAT ist eher für Strings gedacht, daher wäre die Variante

    SELECT
    LOWER(CONCAT('ABC', '1234')),
    LOWER(CONCAT('ABC', CAST(1234 AS CHAR)))
    die beste bzw. korrekte Lösung.

    Grüße
    Thomas

    Kommentar


    • #3
      Ich muss sowieso CAST benutzen, weil die Zahl bei mir als Spaltenwert vorkommt. Danke fürs Testen.
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar


      • #4
        Zitat von Chriz Beitrag anzeigen
        Die zweite Spalte sollte eigentlich abc1234 liefern, tut es aber nicht, sondern ABC1234.
        Nicht mehr, wenn du die Anwendung von LOWER und CONCAT vertauschst, also
        Code:
        CONCAT( LOWER( 'ABC' ) , 1234 )
        Ob das bei dir eine Option ist, oder ob du zu viele String-Spalten oder an wechselnden Positionen konkatenieren willst, kann ich nicht sagen.

        Kommentar

        Lädt...
        X