Eredmény: 1 - 6 (6) összesen

Téma: Mysql szűrés bármire, amiben nincs egy angol betű sem

  1. #1
    búgócsiga Akka logója
    Csatlakozott
    10-05-06
    Hozzászólás
    3.841
    Begyűjtött 1.442 köszönetet
    741 hozzászólásával

    Alapbeállítás Mysql szűrés bármire, amiben nincs egy angol betű sem

    Sziasztok,

    szavakat szeretnék kiszűrni egy mysql adatbázis oszlopában úgy, hogy minden érték kapjon status="0"-t, amiben akárcsak egyetlen angol betű sincs.
    Amiket találtam Stackoverflow-on példákat, azok kizárólagos egyezéseket néztek regexp-es "A-Z" logikával, de ez nekem nem jó, mert az á,é,č,ä betűket tartalmazó szavakat is "0"-ra tették.

    Példa szavak:

    lány
    óra
    ängie
    وجدي
    joy
    sőt
    용환
    иунчи
    tango
    ชุมพล

    Ezekből szeretném, ha ezekre kerülne "0" érték (vagyis amiben tényleg egy db angol betű sincs):
    وجدي
    용환
    иунчи
    ชุมพล

    Értelmetlen szavak (mint pl. éőáé) nincsenek az adatbázisban, így csak az angol abc betűinek figyelése elég.
    Tudtok erre megoldást?

    Köszi,
    Akka



  2. #2
    búgócsiga Akka logója
    Csatlakozott
    10-05-06
    Hozzászólás
    3.841
    Begyűjtött 1.442 köszönetet
    741 hozzászólásával

    Alapbeállítás re: Mysql szűrés bármire, amiben nincs egy angol betű sem

    Update, sikerüt megoldani egy rendkívül elegáns megoldással

    UPDATE adatbazis SET status ="0" WHERE adat NOT LIKE "%a%" and title NOT LIKE "%b%" and title NOT LIKE "%c%" and title NOT LIKE "%d%" and title NOT LIKE "%e%" and title NOT LIKE "%f%" and title NOT LIKE "%g%" and title NOT LIKE "%h%" and title NOT LIKE "%i%" and title NOT LIKE "%j%" and title NOT LIKE "%k%" and title NOT LIKE "%l%" and title NOT LIKE "%m%" and title NOT LIKE "%n%" and title NOT LIKE "%o%" and title NOT LIKE "%p%" and title NOT LIKE "%q%" and title NOT LIKE "%r%" and title NOT LIKE "%s%" and title NOT LIKE "%t%" and title NOT LIKE "%u%" and title NOT LIKE "%v%" and title NOT LIKE "%w%" and title NOT LIKE "%x%" and title NOT LIKE "%y%" and title NOT LIKE "%z%";



  3. #3
    Szerkesztő djjean logója
    Csatlakozott
    11-10-15
    Hely
    Baja
    Hozzászólás
    211
    Begyűjtött 48 köszönetet
    44 hozzászólásával

    Alapbeállítás re: Mysql szűrés bármire, amiben nincs egy angol betű sem

    Így esetleg?

    PHP kód:
    WHERE adat NOT REGEXP '[\u00C0-\u1FFF\u2C00-\uD7FF\w]' 




  4. Az alábbi felhasználók hálásak a válaszért:

    Akka (2017-07-10)

  5. #4
    búgócsiga Akka logója
    Csatlakozott
    10-05-06
    Hozzászólás
    3.841
    Begyűjtött 1.442 köszönetet
    741 hozzászólásával

    Alapbeállítás re: Mysql szűrés bármire, amiben nincs egy angol betű sem

    Idézet djjean eredeti hozzászólása Hozzászólás megtekintése
    Így esetleg?

    PHP kód:
    WHERE adat NOT REGEXP '[\u00C0-\u1FFF\u2C00-\uD7FF\w]' 
    Következő körben kipróbálom ezt



  6. #5
    Törzsvendég flaszlo logója
    Csatlakozott
    10-10-07
    Hely
    Alsópáhok
    Hozzászólás
    138
    Begyűjtött 16 köszönetet
    15 hozzászólásával

    Alapbeállítás re: Mysql szűrés bármire, amiben nincs egy angol betű sem

    Where után adat helyett title kell. Csak véletlenül kibökte a szemem. :-) Egyébként tényleg rendkívül elegáns és hatékony megoldás. :-)



  7. #6
    Bölcs
    Csatlakozott
    11-03-05
    Hely
    UK
    Hozzászólás
    501
    Begyűjtött 66 köszönetet
    52 hozzászólásával

    Alapbeállítás re: Mysql szűrés bármire, amiben nincs egy angol betű sem

    Idézet Akka eredeti hozzászólása Hozzászólás megtekintése
    Update, sikerüt megoldani egy rendkívül elegáns megoldással

    UPDATE adatbazis SET status ="0" WHERE adat NOT LIKE "%a%" and title NOT LIKE "%b%" and title NOT LIKE "%c%" and title NOT LIKE "%d%" and title NOT LIKE "%e%" and title NOT LIKE "%f%" and title NOT LIKE "%g%" and title NOT LIKE "%h%" and title NOT LIKE "%i%" and title NOT LIKE "%j%" and title NOT LIKE "%k%" and title NOT LIKE "%l%" and title NOT LIKE "%m%" and title NOT LIKE "%n%" and title NOT LIKE "%o%" and title NOT LIKE "%p%" and title NOT LIKE "%q%" and title NOT LIKE "%r%" and title NOT LIKE "%s%" and title NOT LIKE "%t%" and title NOT LIKE "%u%" and title NOT LIKE "%v%" and title NOT LIKE "%w%" and title NOT LIKE "%x%" and title NOT LIKE "%y%" and title NOT LIKE "%z%";
    nem tudom aktualis-e meg, de ha ez folyamatos keresgeles lesz akkor a like-nal lehet erdemes lenne gyorsabb megoldast talalni, foleg ha nagy az adatbazis.
    Probalhatod szimplan CAST-olt stringet osszehasonlitani az eredetivel ha csak 8bites karaktereket akarsz megtartani:
    Kód:
    UPDATE adatbazis SET status ="0" WHERE title<>CAST(title AS VARCHAR)
    Vagy probalhatod tsql pathindex-el:
    Kód:
    UPDATE adatbazis SET status ="0" WHERE PATINDEX('%[A-Z]%',UCASE(title))<=0
    Vagy hasznalhatsz store procedure-t es azt hivod meg a query-ben

    Ha csak egyzer-egyszer kell megnezned akkor igazabol tok mindegy.


    Notex az online notesz, linkkatalógus, tartalommegosztó és még sok más...

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
  •