Разделить данные на несколько столбцов - PullRequest
0 голосов
/ 05 октября 2009

Это данные, расположенные в данный момент в одном столбце:

"Название Информация - Компания Здесь - Город Здесь, 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; 

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

Ossi

Ответы [ 2 ]

1 голос
/ 05 октября 2009

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

<?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.
0 голосов
/ 05 октября 2009

вижу 2 пути:

Во-первых: используйте регулярное выражение как

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

с 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...