gpt4 book ai didi

MySQL:如何将一个表中的名称字段分成两个单独表中的名字/姓氏?

转载 作者:行者123 更新时间:2023-11-29 06:22:00 28 4
gpt4 key购买 nike

我有一个 drupal 数据库,其中 node 表充满了配置文件。字段node.title是“Firstname Lastname”。我想分隔名称,以便 node.title = "Firstname",并完全在另一个表中,content_type_profile.field_lastname_value = "Lastname"。两个表中的条目可以在字段 nid 上连接。

我很乐意运行 SQL 命令来执行此操作,并且我可以采用天真的方法,即第一个单词是名字,字段中的其他所有内容都是姓氏 - 这将意味着一些手动更正,但这比一开始就手动完成要好得多。

(我读过 this question ,答案肯定就在那里,但我不太精通 SQL,并且不确定如何让它适用于我的数据库。)

谢谢!

最佳答案

您可以将“John Smith”替换为表中的实际列名称,但这应该能让您有一个大概的了解。

select substring('John Smith',1,instr('John Smith',' ')-1) first_name; 

select substring('John Smith',instr('John Smith',' ')+1) last_name;

编辑:

这是一个完整的工作示例。我在 Oracle 上做的,因为我没有 drupal,但希望语法应该相似。

CREATE TABLE content_type_profile (nid number,field_lastname_value VARCHAR2(20));
CREATE TABLE node (nid number,title VARCHAR2(20))

DELETE FROM node;
INSERT INTO node VALUES (1, 'John Smith');
INSERT INTO node VALUES (2, 'Jane Doe');

DELETE FROM content_type_profile;
INSERT INTO content_type_profile VALUES (1,NULL);
INSERT INTO content_type_profile VALUES (2,NULL);

UPDATE content_type_profile c
SET field_lastname_value =
(SELECT SUBSTR(n.title,instr(n.title,' ')+1)
FROM node n
WHERE n.nid = c.nid);

SELECT * FROM content_type_profile;
// returns 2 rows, one for Smith and one for Doe

UPDATE node
SET title = SUBSTR(title,1,instr(title,' ')-1);

SELECT * FROM node;
// returns 2 rows, one for John and one for Jane

关于MySQL:如何将一个表中的名称字段分成两个单独表中的名字/姓氏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2773678/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com