这是当前位于一列中的数据:
“标题信息 - 公司在这里 - 城市在这里,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
答案 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)
我看到两种方式:
首先:使用正则表达式
(^[^-]*) - ([^-]*) - ([^,]*),?(.*)$
第二:根本不使用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);