[SQL] REGEXP

Dieses Thema im Forum "Webentwicklung" wurde erstellt von onip, 15. Februar 2012 .

Schlagworte:
  1. 15. Februar 2012
    REGEXP

    hallo zusammen,

    für eine suchanfrage verwende ich REGEXP.
    mir ist nun aufgefallen das folgendes nicht geht.
    PHP:
    SELECT  *   FROM  ` produkt WHERE  ` name REGEXP  '(R)-2'
    es kommt mit irgendein zeichen nicht klar.

    meine ganze sql sieht so aus.
    PHP:
    SELECT  *, 
    IF(
    chemical_produkt . name REGEXP  "(R)-2-Pentanol" 1 0 ) AS  nname
    (
    SELECT name FROM chemical_cat WHERE catid = chemical_liste . catid  AND  lid = 1 ) AS  catname
    FROM chemical_produkt 
    LEFT JOIN chemical_liste ON chemical_liste
    . produktid = chemical_produkt . produktid 
    WHERE 
    ( chemical_produkt . activ > AND  chemical_produkt . lid = AND ( chemical_produkt . name REGEXP  "(R)-2-Pentanol" )) 
    ORDER BY  ( nname  catname DESC 
    produktname = "(R)-2-Pentanol"

    wenn ich z.b. folgende zeichen versuche
    "(R)" -> geht
    "(R)-" -> geht nicht
    "-2" -> geht
    "-2-Pentanol" -> geht
    "(R)-2-Pentanol" -> geht nicht

    was ist das problem?
     
  2. 15. Februar 2012
    AW: REGEXP

    ich glaub du verwechselst REGEXP mit LIKE
    LIKE -> einfaches suchmuster: %foo%
    REGEXP -> reguläre ausdrücke: sachen wie ^(foo)?ba[rz]{1}$

    "(R)" -> geht, weil R vorkommt (die klammern sind teil des ausdrucks!)
    "(R)-" -> geht nicht, weil "R-" nicht vorkommt
    "-2" -> geht, weil es so vorkommt
    "-2-Pentanol" -> geht, weil es so vorkommt
    "(R)-2-Pentanol" -> geht nicht, weil "R-2-Pentanol" nicht vorkommt.

    lösung: \(R\)-2-Pentanol

    Code:
    SELECT * FROM `produkt` WHERE `name` REGEXP '\\(R\\)-2'
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.