美好的一天。
表有行:
name
стоматолог
стоматолога
стоматологом
врач стоматолог
врача стоматолога
врач-стоматолог
врача-стоматолога
врача стоматолога-терапевта
врача-стоматолога$
врача-стоматолога$1
врача-стоматолога-терапевта$
врача-стоматолога-терапевта$1
врачом-стоматологом
врачом стоматологом-терапевтом
врачом-стоматологом-терапевтом
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА БЕСПЛАТНАЯ
УСЛУГИ СТОМАТОЛОГИЧЕСКИЕ ХИРУРГ-СТОМАТОЛОГ
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА-ХИРУРГА
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА-ХИРУРГА
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА ДЕТСКОГО БЕСПЛАТНАЯ ВСЕ ВИДЫ
我使用下一个查询:
...
WHERE name LIKE 'стоматолог'
OR name LIKE 'стоматолог[$-()/ ]'
OR name LIKE 'стоматолог[$-()/ ]%'
OR name LIKE 'стоматолог[аеёиоуыэюяъь]'
OR name LIKE 'стоматолог[аеёиоуыэюяъь][$-()/ ]%'
OR name LIKE 'стоматолог[аеёиоуыэюяъь][йюм$-()/ ]'
OR name LIKE 'стоматолог[аеёиоуыэюяъь][йюм$-()/ ]%'
OR name LIKE '[$-()/ ]стоматолог'
OR name LIKE '[$-()/ ]стоматолог[аеёиоуыэюяъь]'
OR name LIKE '[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ]'
OR name LIKE '[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ]%'
OR name LIKE '%[$-()/ ]стоматолог'
OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь]'
OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ]'
OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ]%'
OR name LIKE '%[$-()/ ]стоматолог[$-()/ ]%'
OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь][$-()/ ]%'
OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ][$-()/ ]%'
请告诉我如何最小化这个查询,真的吗?
P.S。:现在我们在查询中有17个条件(在where
中)。如果可能,我想将所有这些条件分组。
答案 0 :(得分:2)
name LIKE '%word%'
将获取“word”,“word second”,“second word”和“one word three”。
因此,请删除LIKE
中的冗余 - 这应该会使LIKE
至少减少一半。
答案 1 :(得分:-2)
我认为你可以使用循环变量数组来做到这一点:
$column = 'p.name'
$variables = array('стоматолог[$-()/ ]','стоматолог[$-()/ ]',....);
$query= "WHERE {$column} LIKE '%стоматолог%' ";
foreach($variables as $variable)
{
$query .= "OR {$column} LIKE '%{$variable}%' ";
}
请注意,我们在循环
之前使用了查询第一部分中的第一个变量