【发布时间】:2021-06-20 04:27:05
【问题描述】:
在我的 Oracle SQL Developer 中,我有一个包含以下“名称”列的表:
| NAME |
--------
Joe Smith
John Doe and Jane Doe
Jenny May, Steven Thomas
我的目标是在新表中创建一个新列,通过分隔 and 和 , 来展平 NAME 表,因此它看起来像:
| NEW_NAME |
------------
Joe Smith
John Doe
Jane Doe
Jenny May
Steven Thomas
我已经掌握了创建分离列的基本逻辑:
SELECT SUBSTR(name, 1, INSTR(name,',',1,1)-1) AS NameOne,
SUBSTR(name, INSTR(name,',',1,1)+1, LENGTH(name)) AS NameTwo,
SUBSTR(name, 1,INSTR(name,' and ',1,1)-1) AS NameThree,
SUBSTR(name, INSTR(name,' and ',1,1)+1,LENGTH(name)) AS NameFour
但这会创建 4 列。我的目标是拥有 1 个合并列,然后我可以对其进行查询以找到我正在寻找的名称。
【问题讨论】:
-
首先:在您的帖子中,您说“拆分 AND”(大写字母),但在示例和代码中的任何地方都有“and”(小写字母)。请澄清实际数据中可能存在的内容。第二:您必须小心处理“和”,因为它也可能是名称的一部分。你不想把“Anand Gupta”分成“An”和“Gupta”——对吧?
-
你有多少个寄存器?我需要知道它,因为我正在考虑收集一些集合来注册您的目标并将其全部放入新表中。但这取决于您的数据量。
-
@mathguy 你们俩都提出了很好的观点,但是这些数据的管理确实很差,所以我只是想为用例做“尽可能好”。只有大约 200 行数据。为了解决“和”问题,我们可以在前后加一个空格。