Согласно моему результату тестирования, я хочу проголосовать за обычный_express, предоставленный karim79. (У меня нет достаточной репутации, чтобы проголосовать сейчас!) [/ G0]
Решение от zombat использует слишком много вызовов функций, я даже упрощаю коды. Я использую PHP 5.4 для запуска обоих решений в 100 000 раз, и вот результат:
$str = 'Hello abc, have a nice day abc! abc!';
$pos = strpos($str, 'abc');
$str = substr_replace($str, '123', $pos, 3);
==> 1,85 сек
$str = 'Hello abc, have a nice day abc! abc!';
$str = preg_replace('/abc/', '123', $str, 1);
==> 1,35 сек
Как вы можете видеть. Производительность preg_replace не так уж плоха, как думают многие. Поэтому я предлагаю классное решение, если ваш обычный экспресс не является сложным.
Если вы просто хотите добавить в заказ по предложению, вы можете использовать что-то вроде:
ORDER BY
CASE WHEN @cName IS NOT NULL
THEN ID
END DESC