【发布时间】:2015-01-12 14:19:36
【问题描述】:
我有一个包含“名称”列的表格,如下所示:
Name
Michael Jackson
Chester Bennington
Mike Shinoda
我想拆分 FirstName 和 LastName 中的 'Name' 值,如下所示:
LastName FirstName
Jackson Michael
Bennington Chester
Shinoda Mike
而且我还需要创建新列并添加这些值,如果可能的话,所有这些都在一个查询中。 所以作为评论,我有名称,我需要创建姓氏,名字列,在第一个空格之后拆分名称值,空格之前的值将进入姓氏,空格之后的值将进入名字。这是我迄今为止尝试过的:
ALTER TABLE `data` ADD `FirstName` VARCHAR(30),ADD `LastName` VARCHAR(30)
INSERT INTO `data`(`LastName`,`FirstName`) VALUES ('...','...')
请帮忙..
【问题讨论】:
-
如果它可以在一个语句中完成,那就太奇怪了。我认为您需要先执行
ALTER TABLE,然后是UPDATE声明。我会问的一个问题是现有名称是否保证是名字 + 空格 + 姓氏,或者是否可能有中间名首字母(或中间名)或包含空格的名字或姓氏(例如,'von Hildebrand ')。 -
您可以使用单个事务,但不能在单个查询中使用
-
@DavidFaber ,现有名称与问题中的完全一样,只是用空格分隔。如果可能的话,我希望名称的第一部分是姓氏,第二部分是是名字。(例如:杰克逊迈克尔)
-
@PetruLebada,
if it's possible是什么意思?目前的数据是什么样的?Name列中的名字是第一个还是最后一个?如果您想知道列顺序是否重要,那并不重要。 -
@DavidFaber ,在我的姓名列中,姓氏是第一位,名字是第二位,所以我可以使用它来提取名字并将其移动到不同的列,就像在空白之前移动字符串空格到一列,空格后面的字符串到另一个字符串。