将数据拆分为多列

时间:2009-10-05 04:56:50

标签: php mysql split

这是当前位于一列中的数据:

“标题信息 - 公司在这里 - 城市在这里,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 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

我看到两种方式:

首先:使用正则表达式

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

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);