首页 > 解决方案 > 如何从要插入新表的一列中获取结果并将结果分开

问题描述

我有一列让我们说注释,注释中的值如下:

药物。这需要与正确的处方一起使用。www.test.comURL:www.test.com/medicine/test.php

我想提取或得到 3 个部分的结果:

  1. 药物
  2. 这需要与正确的处方一起使用。
  3. www.test.com/medicine/test.php

但是,如何在 MySQL 中使用 select 语句来做到这一点?任何帮助都非常感谢!

标签: mysqlsqlselect

解决方案


嗯,简单的答案是:不容易。您可以编写一个函数来为您执行此操作。

您应该阅读以下解决方案:将值从一个字段拆分为两个

摘自上面的答案:

使用该功能:

DELIMITER $$

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255) DETERMINISTIC
BEGIN 
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');
END$$

DELIMITER ;

您将能够按如下方式构建您的查询:

SELECT SPLIT_STR(membername, ' ', 1) as memberfirst,
       SPLIT_STR(membername, ' ', 2) as memberlast
FROM   users;

如果你改进了你的问题,我可以给你一个关于如何实现这个的更具体的答案,但是你提供的关于这个列的结构或者它如何从一行到另一行的变化的信息很少。

编辑

这个函数的一些用法:它接受3个参数。

  1. 您要拆分的字符串。

  2. 一个分隔符。也就是说,您要拆分字符串的一个或多个字符。

  3. 一个索引。使用它来选择你想要的分割字符串的哪一部分。

因此,例如,如果您的列的格式如下:

SELECT summary
FROM MyTable

结果:

          summary
----------------------------
 "foo. bar. www.foobar.com"

你可以这样写:

SELECT SPLIT_STR(summary, '. ', 1) AS a_summary,
       SPLIT_STR(summary, '. ', 2) AS a_description,
       SPLIT_STR(summary, '. ', 3) AS a_url,
FROM MyTable

输出可能类似于:

a_summary | a_description |    a_url
------------------------------------------
   foo    |     bar       | www.foobar.com

推荐阅读