Добавление к строке в MySQL

Кинотавр

Новичок
Добавление к строке в MySQL

Все знают такую конструкцию, котрая позволяет прибавить единицу к значению численного поля:
mysql_query(" UPDATE mytable SET myfield=myfield+1 ", $cid);

А если поле текстовое, то есть ли что-нибудь подобное, чтобы добавить к нему текст, одним запросом UPDATE, без предвартельной выборки SELECT ?
 

Profic

just Profic (PHP5 BetaTeam)
Хе, я такие извраты делал :)
вот например, таблица заполняется load data infile
и мне там нужно поправить одно поле вот таким запросом:
[sql]
UPDATE tbl SET annuldate = CONCAT(SUBSTRING_INDEX(@a:=SUBSTRING_INDEX(date_tmp, ' ', 1), '.', -1), '-', SUBSTRING_INDEX(SUBSTRING_INDEX(@a, '.', 2), '.', -1), '-', SUBSTRING_INDEX(@a, '.', 1)) WHERE date_tmp IS NOT NULL
[/sql]
это дата, но в оригинале лежащая совершенно в неудобоваримом виде :)
 

RomikChef

Guest
можно было из без переменных обойтись :)
но круто :)
 

Profic

just Profic (PHP5 BetaTeam)
можно было из без переменных обойтись :)
Можно, но на таблице в ~700000 записей, так ИМХО быстрее :)
Оценили :p
А вообще я извраты люблю :) Вот, например, в написанном мною движке шаблоне в парсинге используется regexp по своей извратности приближающийся к данному запросу :)

ЗЫ. Сорри за оффтоп...
 

RomikChef

Guest
что быстрее?
переменные, вместо того, чтобы указать substring_index-у порядковый номер точки, от которой резать?
Не думаю...
 

Profic

just Profic (PHP5 BetaTeam)
переменные, вместо того, чтобы указать substring_index-у порядковый номер точки, от которой резать?
там дата лежит в виде "01.01.1999 00:00:00", соответственно в @a после @a := SUBSTRING_INDEX( date_tmp, ' ', 1 ) получается "01.01.1999", которая потом всюду используется...
Хотя скорость в обзем-то в данном случае не критична, т.к. обновление базы происходит ~раз в месяц... :)
 
Сверху