Допустим надо заменить в строке значение: g[цифра] на другое g[цифра] или просто добавить в конец строки
php работает все варианты:
echo preg_replace("/(g\d+)|$/", "g2", "g1", 1);
echo preg_replace("/(g\d+)|$/", "g2", "b", 1);
echo preg_replace("/(g\d+)|$/", "g2", "", 1);
в mysql работают только первые два (третий с пустой строкой не работает)
SELECT regexp_replace("g1", "(g[:digit:]+)|$", "g2", 1, 1) FROM t limit 1;
SELECT regexp_replace("b", "(g[:digit:]+)|$", "g2", 1, 1) FROM t limit 1;
SELECT regexp_replace("", "(g[:digit:]+)|$", "g2", 1, 1) FROM t limit 1;
Мелочь, а неприятная. Мне сдается в mysql виноват 4 параметр pos, он как бы указывает заменять с первого символа, а строка пустая.