我的专栏包含以下信息:
Author varchar(255) utf8_general_ci
在我之前设计网站的程序员使用此专栏来存储两件事!
首先,作者的英文名称,然后他/她的名字用阿拉伯语!
所以,该列中的所有数据都具有相同的结构:تووياما أيما (Tooyama Ema)
括号之间是英文名称。括号外的阿拉伯语名称。
有没有办法取英文名称并将其放入新专栏。加上删除括号?我可以使用PHP和SQL,所以请你给我一个这两种语言的解决方案吗?
我希望结果看起来像这样:
作者:
تووياما أيما
作者用英语:Tooyama Ema
我说的是很多具有相同结构的行。我想改变数据库中的结构。
答案 0 :(得分:3)
$str = "تووياما أيما (Tooyama Ema)";
preg_match("/(.+) \((.+)\)/", $str, $matches);
var_dump($matches);
答案 1 :(得分:3)
我建议使用数据库驱动的解决方案,与使用PHP相比,编写和运行所需的时间更少。
在表名上不确定,但这里有你需要的东西,根据你的喜好改变:
(假设粗表定义)
CREATE TABLE Test (
id int(11) not null auto_increment,
Author varchar(255),
primary key (id)
)
新列的alter table:
ALTER TABLE Test ADD COLUMN `arabic_name` varchar(255) AFTER `Author`;
ALTER TABLE Test ADD COLUMN `english_name` varchar(255) AFTER `arabic_name`;
一个简单的更新语句来迁移数据(不是最漂亮,但工作得很好):
UPDATE Test
SET
arabic_name = SUBSTR(TRIM(Author), 1, LOCATE(' ', TRIM(Author)) - 1),
english_name = SUBSTR(TRIM(Author), LOCATE('(', TRIM(Author)) + 1, LOCATE(')', TRIM(Author)) - LOCATE('(', TRIM(Author)) - 1);