Oldal: 1 / 2 12 UtolsóUtolsó
Eredmény: 1 - 10 (11) összesen

Téma: MySQL lekérdezés Regexp és ékezetes karakterek

  1. #1
    Tag
    Csatlakozott
    10-07-26
    Hozzászólás
    78
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás MySQL lekérdezés Regexp és ékezetes karakterek

    Van néhány lekérdezésem, amelyekben azt szeretném, hogy ezekkel a betűkkel kezdődő videókat jelenítse meg az oldalon.

    Ezek működnek:
    Kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim LIKE 'Ü%'");
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim LIKE 'Ö%'");
    Ezek is:
    Kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^Ü'");
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^Ö'");
    Így is működik:
    Kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^[CD]'");
    Így viszont már nem:
    Kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^[ÖÜ]'");
    Így más ékezeteseket is kiad.

    Hogy lehet az, hogy ha külön-külön adom meg a RegExp-be az ékezetes karaktereket, akkor jó. Ha nem ékezeteseket adok meg, többet, akkor is jó.
    De ha ékezeteseket adok meg többet akkor már nem?



  2. #2
    Adminisztrátor BagiZoli logója
    Csatlakozott
    07-04-26
    Hozzászólás
    3.861
    Begyűjtött 326 köszönetet
    158 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    PHP kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^(Ö|Ü)'"); 
    ?

    forrás http://www.go4expert.com/forums/showthread.php?t=2337



  3. #3
    Tag
    Csatlakozott
    10-07-26
    Hozzászólás
    78
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    Idézet Bagi Zoltán eredeti hozzászólása Hozzászólás megtekintése
    PHP kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^(Ö|Ü)'"); 
    ?

    forrás http://www.go4expert.com/forums/showthread.php?t=2337
    Köszi szépen. Az viszont érdekes, hogy a CD-nél nem kellett elválasztójel (pipe), csak ezeknél az ékezeteseknél.



  4. #4
    Adminisztrátor BagiZoli logója
    Csatlakozott
    07-04-26
    Hozzászólás
    3.861
    Begyűjtött 326 köszönetet
    158 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    Szerintem oda is kell, max "megette" a mysql.



  5. #5
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    Idézet Bagi Zoltán eredeti hozzászólása Hozzászólás megtekintése
    Szerintem oda is kell, max "megette" a mysql.
    a kapcsos zárójel közé character set-et rakhatunk elvileg ugyhogy abban is jónak kellene lennie, csak úgy látszik az ékezetes karakterekkel bug-os valamiért.


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.
    Ruby blog
    Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
    Respect all, fear none

  6. #6
    Adminisztrátor BagiZoli logója
    Csatlakozott
    07-04-26
    Hozzászólás
    3.861
    Begyűjtött 326 köszönetet
    158 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    Idézet Geri eredeti hozzászólása Hozzászólás megtekintése
    a kapcsos zárójel közé character set-et rakhatunk elvileg ugyhogy abban is jónak kellene lennie, csak úgy látszik az ékezetes karakterekkel bug-os valamiért.
    Ma is tanultunk valamit



  7. #7
    Tag
    Csatlakozott
    10-07-26
    Hozzászólás
    78
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    Idézet Bagi Zoltán eredeti hozzászólása Hozzászólás megtekintése
    Ma is tanultunk valamit
    Közben kipróbáltam "élesben" és kiderült, hogy még mindig kellett rajta "kozmetikázni" egy picit.
    Tehát végül is a lekérdezés így működik tökéletesen:

    Kód:
    mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^Ö|^Ü'");




  8. #8
    Törzsvendég
    Csatlakozott
    08-12-06
    Hozzászólás
    104
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    Kedves toldigabor!

    Kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim LIKE 'Ü%'");
    Ez lekérdez mindent, ami "Ü" betűvel kezdődik. (Eddig semmi új) De ha pl.: latin2_general_ci-vel kapcsolódsz az adatbázishoz, akkor ezzel megkapod az összes olyan sort ami, "u", "ú", "ü", "ű", "U", "Ú", "Ü", "Ű" karakterrel kezdődik, mivel ilyenkor se az ékezet, se a kisbetű/nagybetű nem számít.

    Ez
    Kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^(Ö|Ü)'");
    teljesen egyenértékű ezzel.:
    Kód:
    mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^Ö|^Ü'");
    Elvileg az elsőnek is tökéletesen kell működnie. Milyen MySQL-t használsz?

    Kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^[ÖÜ]'");
    Ez azért nem jó, mert hiába sorolod fel a karaktereket, nem mondod meg, hogy mennyi kell belőle. Általában ilyenkor "+" jelet használunk, mivel ez minimum 1 karakter jelent. Tehát helyesen:
    Kód:
    $lekerdezes=mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^[ÖÜ]+'");
    Üdvözlettel
    kjaron



  9. #9
    Tag
    Csatlakozott
    10-07-26
    Hozzászólás
    78
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    WampServer 2.0i-t használok:
    Apache 2.2.11
    MySQL 5.1.36
    PHP 5.3.0



  10. #10
    Törzsvendég
    Csatlakozott
    08-12-06
    Hozzászólás
    104
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: MySQL lekérdezés Regexp és ékezetes karakterek

    Kedves toldigabor!

    Nekem is hasonló MySQL-em van. Próbálkoztam egy kicsit és arra a magállapításra jutottam, hogy a MySQL regex értelmezője kissé megengedőbb, mint más nyelveké (pl.: php, javascript). Az alábbi kódok gond nélkül működnek és ugyan azt az eredményt szolgáltatják.

    Kód:
    mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^(Ö|Ü)'");
    mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^Ö|^Ü'");
    mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^[ÖÜ]'");
    mysql_query("SELECT * FROM tabla WHERE cim REGEXP '^[ÖÜ]+'");
    Azért érdemes követni a regex szabványos változatát, hátha egy későbbi verzióban javítják (szigorítják) az értelmezést.
    Egy kis olvasnivaló: regular-expressions.info

    Üdvözlettel
    kjaron



Oldal: 1 / 2 12 UtolsóUtolsó

A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •