Разделить данные на несколько столбцов

Это данные, находящиеся в настоящее время в одном столбце:

"Информация о названии – компания здесь – город здесь, ST"

ST представляет собой состояние, т.е. GA

Иногда мои данные выглядят так:

"Информация о названии – Компания здесь – Соединенные Штаты"

Данные находятся в столбце с именем «title» и без кавычек.

Как разбить это с помощью php, для 4 новых столбцов с именем:

«New_Title», «Компания», «Город», «Государство»,

На втором примере, где нет города и штата только страны, было бы нормально перейти в колонку «город».

Схема таблицы:

CREATE TABLE table ( id int(8) NOT NULL DEFAULT '0', Title char(100) DEFAULT NULL, New_Title char(100) DEFAULT NULL, Company char(100) DEFAULT NULL, City char(100) DEFAULT NULL, State char(100) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

Спасибо за ваше время.

Осси

Сначала разделите на «-», затем разделите третий элемент, возвращаемый на «,»,

 <?PHP $title = $row['title']; // or however you get the title. $parts = explode("-",$title); if ( count($parts) != 3) die("Invalid title: $title"); $newtitle = $parts[0]; $company = $parts[1]; $location_parts = explode(',',$parts[2]); $city = $location_parts[0]; $state = $location_parts[1]; //now you've got $newtitle, $company, $city, and $state to do something productive with. 

Я вижу два способа:

Во-первых: используйте regexp like

(^[^-]*) - ([^-]*) - ([^,]*),?(.*)$

с preg_match

Второе: вообще не используйте PHP-код. SQL Update будет достаточно

UPDATE mytable t SET t.title = SUBSTRING_INDEX(t.value, ' - ', 1), t.company = SUBSTRING_INDEX(SUBSTRING_INDEX(t.value, ' - ', 2), ' - ', -1), t.city = SUBSTRING_INDEX(t.address, ' - ', -1);

а потом

 UPDATE mytable t SET t.city = SUBSTRING_INDEX(t.city ',', 1), t.state = SUBSTRING(t.city, LENGTH(SUBSTRING_INDEX(t.city, ',', 1))+3);