Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将一列分隔为两列(sql)_Php_Sql - Fatal编程技术网

Php 将一列分隔为两列(sql)

Php 将一列分隔为两列(sql),php,sql,Php,Sql,我有一个包含以下信息的专栏: Author varchar(255) utf8_general_ci 在我之前设计网站的程序员用这个专栏来存储两样东西! 首先是英文的作者姓名,然后是阿拉伯文的作者姓名! 因此,该列中的所有数据都具有相同的结构: 括号之间是英文名称。括号外为阿拉伯语名称。 有没有办法把英文名字写进一个新的栏目。加上删除括号?我可以同时使用PHP和SQL,所以你能给我一个这两种语言的解决方案吗? 我希望结果如下所示: 作者: 英文作者:Tooyama Ema 我说的是许多

我有一个包含以下信息的专栏:

Author  varchar(255)    utf8_general_ci
在我之前设计网站的程序员用这个专栏来存储两样东西! 首先是英文的作者姓名,然后是阿拉伯文的作者姓名! 因此,该列中的所有数据都具有相同的结构:

括号之间是英文名称。括号外为阿拉伯语名称。
有没有办法把英文名字写进一个新的栏目。加上删除括号?我可以同时使用PHP和SQL,所以你能给我一个这两种语言的解决方案吗?
我希望结果如下所示:

作者:

英文作者:
Tooyama Ema


我说的是许多具有相同结构的行。我想更改数据库中的结构。

我建议使用数据库驱动的解决方案,与使用PHP相比,编码和运行所需的时间更少

$str = "تووياما أيما (Tooyama Ema)";
preg_match("/(.+) \((.+)\)/", $str, $matches);

var_dump($matches);
不确定桌子上的名字,但这是你需要的肉,根据你的喜好:

(假设粗略的表格定义)

新列的alter表:

ALTER TABLE Test ADD COLUMN `arabic_name` varchar(255) AFTER `Author`;
ALTER TABLE Test ADD COLUMN `english_name` varchar(255) AFTER `arabic_name`;
迁移数据的简单update语句(不是最漂亮的,但效果很好):


我推荐一个db驱动的解决方案,应该比使用PHP花更少的时间来编码和运行

不确定桌子上的名字,但这是你需要的肉,根据你的喜好:

(假设粗略的表格定义)

新列的alter表:

ALTER TABLE Test ADD COLUMN `arabic_name` varchar(255) AFTER `Author`;
ALTER TABLE Test ADD COLUMN `english_name` varchar(255) AFTER `arabic_name`;
迁移数据的简单update语句(不是最漂亮的,但效果很好):


听起来很简单。我什么都没试过。我不知道如何把它分开。列
Author
有20000行。我想毫无错误地自动完成这一切。听起来很简单。我什么都没试过。我不知道如何把它分开。列
Author
有20000行。我想毫无错误地自动完成这一切,但这只是一行,我想在所有行中完成。我想改变SQL中的结构。不是在PHP中。@shnisaka:您需要选择所有记录,进行处理,然后更新。我建议您将准备好的报表与交易结合使用。有关详细信息,请参阅。哦!我没想到!非常感谢。但这只是一行,我想在所有行中都这样做。我想改变SQL中的结构。不是在PHP中。@shnisaka:您需要选择所有记录,进行处理,然后更新。我建议您将准备好的报表与交易结合使用。有关详细信息,请参阅。哦!我没想到!非常感谢。这要明智得多。不需要做一次过的申请,我同意。这比另一个答案要好得多。=)+1这要明智得多。不需要做一次过的申请,我同意。这比另一个答案要好得多。=)+1.
 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);