SQL-запрос для удаления текста в скобках? - PullRequest
1 голос
/ 18 мая 2010

Какой лучший запрос SQL для удаления любого текста в скобках в базе данных mySQL? Я хотел бы что-то, что работает независимо от положения круглых скобок в тексте (начало, середина, конец, что угодно). Мне не важно хранить текст в скобках, просто удаляя его.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 мая 2010

Я понял:

      UPDATE table SET column = CONCAT(SUBSTR(column,1,LOCATE('(', 
    column)-1),SUBSTR(column,LOCATE(')', column)+1))
 WHERE column LIKE '%(%' AND column LIKE '%)%'

Это сработало для моих целей, но делает следующие предположения:

  • круглые скобки соответствуют друг другу
  • в строке существует только одна пара скобок (без вложенности и т. Д.)
0 голосов
/ 18 мая 2010

Похоже, что MySQL не имеет функции замены регулярных выражений, поэтому самый простой способ изменить существующие данные, вероятно, будет с внешним приложением. Затем сохраните все новые данные в чистоте, прежде чем добавлять их в базу данных.

в PHP:

$result = $db->query();
while($row = $result->next){
  $value = preg_replace('/\(.*?\)/', '', $row->value);
  $db->query('UPDATE ... SET value = ' . $value . ' WHERE id = ' . $row->id);
}

примечание: я не помню, поддерживает ли движок PHP Regex ленивое соответствие повторений (.*?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...