#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 catnameFROM chemical_produkt LEFT JOIN chemical_liste ON chemical_liste . produktid = chemical_produkt . produktid WHERE ( chemical_produkt . activ > 0 AND chemical_produkt . lid = 1 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? + Multi-Zitat Zitieren
#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' + Multi-Zitat Zitieren
#3 15. Februar 2012 AW: REGEXP danke, ich wußte das ich was escapen muss. läuft perfekt. + Multi-Zitat Zitieren