mysql - 如何从要插入新表的一列中获取结果并将结果分开
问题描述
我有一列让我们说注释,注释中的值如下:
药物。这需要与正确的处方一起使用。www.test.comURL:www.test.com/medicine/test.php
我想提取或得到 3 个部分的结果:
- 药物
- 这需要与正确的处方一起使用。
- www.test.com/medicine/test.php
但是,如何在 MySQL 中使用 select 语句来做到这一点?任何帮助都非常感谢!
解决方案
嗯,简单的答案是:不容易。您可以编写一个函数来为您执行此操作。
您应该阅读以下解决方案:将值从一个字段拆分为两个
摘自上面的答案:
使用该功能:
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个参数。
您要拆分的字符串。
一个分隔符。也就是说,您要拆分字符串的一个或多个字符。
一个索引。使用它来选择你想要的分割字符串的哪一部分。
因此,例如,如果您的列的格式如下:
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
推荐阅读
- php - 如何从下面的数组中获取 orderId?
- c# - C# API GetResponse 问题
- tfs - nuget 还原步骤上的路径无效
- php - Symfony swiftmail 不会从代码发送
- javascript - 如何在所有输入都更新之前禁止按“下一步”按钮
- java - 编写通用 javadoc
- javascript - 如何使用javascript解析嵌套的json
- c# - 我可以声明一个接口方法以在 C# 中返回通用接口吗?
- php - 如何在 PHP 中以一对一的关系从两个表中检索数据组合?
- c# - 如何使用javascript反序列化(不使用newtonsoft)在C#中反序列化JSON?