mysql replace несколько значений
Задача: нужно выбрать строки, в которых поле начинается с выбранной буквы, не учитывая определенный набор символов в его начале — ИП, ООО и т.д.
Т.е. фильтр по алфавиту, но наименования указаны как ИП Тест или в другом любом формате.
Например, при поиске результатов, начинающихся с С должен найти ООО РЦ «Северо-Запад»
Набор неучитываемых символов задается пользователем, указывается через разделитель |:
$setting_replace='ИП|ООО|ТД|РЦ|"|«'; $part_sql='`name`'; $replaces=explode('|',$setting_replace); foreach($replaces as $item){ $part_sql="REPLACE(".$part_sql.",'".$item."','')"; } $where.=" AND TRIM(".$part_sql.") LIKE '".$_GET['let']."%'";//TRIM - удаляем образовавшиеся пробелы, в нашем случае в начале
В результате поиска строк, у которых наименование начинается с «С» требуемая часть sql-запроса будет иметь вид:
AND TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(`name`,'ИП',''),'ООО',''),'ТД',''),'РЦ',''),'"',''),'«','')) LIKE 'С%'