Это данные, находящиеся в настоящее время в одном столбце:
"Информация о названии – компания здесь – город здесь, 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);