2009-10-05 3 views
0

Это данные в настоящее время находится в одной колонке:Сплит данные в нескольких столбцах

«Название Info - компании здесь - Город Здесь ST»

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

Иногда мои данные выглядит следующим образом:

«название Info - Компания Здесь - Соединенные Штаты»

данных на колонке под названием «название» и без кавычек.

Как разделить это с помощью 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

ответ

1

Первый раскол на "-", а затем разбивают третий элемент возвращается на ""

<?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

Сладкие;) Будет ли у вас есть код удобный для меня, чтобы вставить их, а? У меня есть столбец «id» в качестве ключа. Если не все нормально, я выясню. Еще раз спасибо. – Ossi

+1

Это хорошее упражнение для вас, много учебников о написании баз данных повсюду :-) – timdev

+0

Это отлично работает. Как подавить это беспокойство Уведомление: Неопределенное смещение: 1 его на этой строке $ state = $ location_parts [1]; это происходит только тогда, когда нет состояния. как я уже сказал, он отлично работает в противном случае;) – Ossi

0

Я вижу 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); 
Смежные вопросы