Hirdetés

Új hozzászólás Aktív témák

  • Sk8erPeter
    nagyúr

    most ismerkedek a pl sql-el

    van egy script
    SELECT *
    FROM táblanév
    WHERE 1=1

    AND upper(g.NAME) LIKE '%lajos%';

    segítsetek miért van az, hogy ha törlöm a where 1=1 feltételt errort kapok?
    ill AND után miért kell az upper? miért nem jó ha simán ezt írom:
    SELECT *
    FROM táblanév

    AND (g.NAME) LIKE '%lajos%';

    Igazából szerintem így lenne értelme:

    ...
    WHERE UPPER( stuff_name ) LIKE UPPER( '%lajos%' )

    ...abban az esetben, ha az adatbázis case sensitive.
    Pl. MySQL-nél alapból tök mindegy, hogy "lajos", "LAJOS" vagy "LaJoS" a tárolt név, simán az UPPER nélkül is kiadja mindegyik találatot, szóval ez case insensitive módon megtalálja az összeset - de collationnel arra is van mód, hogy ne így legyen: [link].

    Case sensitive esetben viszont mindkettőt jó, ha nagybetűssé teszed, és úgy veted össze, mert ellenkező esetben nem mindegy, hogy a fent felsorolt példák közül hogyan keresel rá.
    Tehát ha nem mindkettőnek a nagybetűssé (vagy épp kisbetűssé) tett változatát veted össze, akkor lehet, hogy egyes találatokat kizársz az eredményekből, mert mondjuk valaki elgépelte a Lajost, és LajOst írt helyette (lásd nagy O).
    A nagybetűssé tett "lajos"-ból "LAJOS" lesz, a nagybetűssé tett "LajOs"-ból is "LAJOS" lesz, tehát így már a két karaktersorozat egyezni fog ebben az 5 karakterben.
    A Te fenti keresésed lehetővé teszi azt is, hogy a "LajOska" nevet is megtalálja.

    Remélem így valamennyire érthető.

Új hozzászólás Aktív témák