2010-05-17 2 views
1

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

Спасибо!

+0

я хотел бы предложить, что код вызова сделать работу манипулирования данными и оставить sql для запроса. – akf

ответ

0

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

в PHP:

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

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

+0

Он использует PCRE, поэтому вы можете сделать кванторы не жадными, добавив '?'. – ThiefMaster

+0

Цитирование и 'mysql_real_escape_string()'. – bobince

2

Я понял это:

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

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

  • скобка правильно подобраны
  • только одна пара скобок существует в строке (без вложенности, и т.д.)
Смежные вопросы