当前位置: 首页 > 面试题库 >

SQL-将单列划分为多列

公孙辰龙
2023-03-14
问题内容

我有以下SQL问题:

如何使用SELECT命令将一列(内部文本)划分为两个单独的带有拆分文本的列?

我需要使用空格字符分隔文本数据。我知道最好举一个例子来简化它。所以:

SELECT COLUMN_A FROM TABLE1

输出:

COLUMN_A
-----------
LORE IPSUM

所需的输出:

COLUMN_A   COLUMN_B
---------  ----------
LORE       IPSUM

谢谢大家的帮助。


问题答案:

取决于数据的一致性-假设要在第一列与第二列中显示的内容之间用一个空格隔开:

WITH TEST_DATA AS
  (SELECT 'LOREM IPSUM' COLUMN_A FROM DUAL)

SELECT SUBSTR(t.COLUMN_A, 1, INSTR(t.COLUMN_A, ' ')-1) AS COLUMN_A,
       SUBSTR(t.COLUMN_A, INSTR(t.COLUMN_A, ' ')+1) AS COLUMN_B
FROM test_data T;

您还可以在REGEX中使用以下查询:

WITH TEST_DATA AS
   (SELECT 'LOREM IPSUM' COLUMN_A FROM DUAL)

SELECT REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 1) COLUMN_A,
       REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 2) COLUMN_B
FROM test_data T;

Oracle 10g +具有正则表达式支持,根据您需要解决的情况提供更大的灵活性。它也有一个正则表达式子字符串方法…

编辑: 3字分割:

WITH TEST_DATA AS
  (SELECT 'LOREM IPSUM DIMSUM' COLUMN_A FROM DUAL)

 SELECT REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 1) COLUMN_A,
     REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 2) COLUMN_B,
     REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 2, 3) COLUMN_C
 FROM test_data T;

参考:

  • SUBSTR
  • 仪器


 类似资料:
  • 当读取从json到熊猫的数据时,一个多标准的酒店评级列被读取如下所示。我有2列在我的数据帧评级和评论ID。因为我从一个较大的Json读取数据框,所以评级列对每个审阅者都有一个条目,其形式如下: 我的目的是将评级列分为7个不同的列,每个列都有各自的标准值:' 任何有格式建议的人都会很有帮助。。 可用数据帧所需数据帧

  • 问题内容: 我正在尝试从SQL Server的主表中创建多个表。例如: 主表看起来像 输出应如下所示: 表A: 表B: 主表每周更新一次,因此可以使用不同的字母。因此,我想创建一个动态查询,该查询将根据有多少个不同的n自动将主表分为“ n”个不同的表,并根据第n个值命名该表。 问题答案: 是的,它是可以实现的,但是Erland Sommarskog的《诅咒与祝福》动态SQL 创建表@tbl 这里的

  • 我在presto上有一个表,它有多个记录的记录。在该记录中,我使用了这个简单的SQL查询,

  • 问题内容: 我有一个具有这种结构的表。 我无法弄清楚我将使用哪种SQL查询来获得这样的结果集: 我正在尝试将三列分为三个单独的行。这可能吗? 问题答案: SELECT Y.UserID, Y.UserName, QuestionName = ‘AnswerToQuestion’ + X.Which, Response = CASE X.Which WHEN ‘1’ THEN AnswerToQue

  • 我有一个非常简单的,其中每个单元格都包含一个列表。我想将列表中的每个元素拆分为它自己的列。我可以通过导出值,然后创建一个新的