我有包含以下信息的列:
Author varchar(255) utf8_general_ci
在我之前设计网站的程序员用这个专栏存储了两样东西!首先是作者的英文姓名,然后是他/她用阿拉伯语的名字!因此,该列中的所有数据都具有相同的结构:تووياما أيما (Tooyama Ema)
括号之间是英文名称。括号外为阿拉伯文名称。有没有办法将英文名称放在新列中。加上去掉括号?我可以使用PHP和SQL,所以你能给我一个这两种语言的解决方案吗?我希望结果看起来像这样:
作者 :
تووياما أيما
英文作者 :Tooyama Ema
我说的是具有相同结构的许多行。 我想更改数据库中的结构。
我推荐一个数据库驱动的解决方案,应该比使用 PHP 花费更少的编码和运行时间。
不确定表名,但这是您需要的肉,请根据自己的喜好进行更改:
(假设粗略的表格定义)
CREATE TABLE Test (
id int(11) not null auto_increment,
Author varchar(255),
primary key (id)
)
新列的更改表:
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);
$str = "تووياما أيما (Tooyama Ema)";
preg_match("/(.+) '((.+)')/", $str, $matches);
var_dump($matches);