我有一栏提供了以下信息:
Author varchar(255) utf8_general_ci在我之前设计这个网站的程序员用这个专栏来存储两样东西!首先是作者的英文名字,然后是他/她的阿拉伯语名字!因此,该列中的所有数据都具有相同的结构:括号之间的تووياما أيما (Tooyama Ema)是英文名称。在括号外用阿拉伯语表示名称。有没有办法把这个英文名字写进一个新的专栏。加上去掉括号?我可以同时使用PHP和SQL,所以请您用这两种语言给我一个解决方案好吗?我希望结果是这样的:
作者:
تووياما أيما英文作者:Tooyama Ema
我指的是结构相同的许多行。我想改变数据库的结构。
发布于 2012-07-06 20:58:14
我建议使用db驱动的解决方案,与使用PHP相比,编码和运行时间应该更短。
不确定桌子上的名字,但这是你需要的肉,随你的喜好而改变:
(假设粗略的表定义)
CREATE TABLE Test (
id int(11) not null auto_increment,
Author varchar(255),
primary key (id)
)新列的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语句(不是最漂亮的,但工作得很好):
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);发布于 2012-07-06 20:35:39
$str = "تووياما أيما (Tooyama Ema)";
preg_match("/(.+) \((.+)\)/", $str, $matches);
var_dump($matches);https://stackoverflow.com/questions/11369292
复制相似问题