Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询-替换/移动部分内容_Mysql_Sql_Database - Fatal编程技术网

Mysql SQL查询-替换/移动部分内容

Mysql SQL查询-替换/移动部分内容,mysql,sql,database,Mysql,Sql,Database,我需要在MySQL中更新大约2000条记录 我从表“my_table”中有一列“my_content”,其值如下 Title: some title here<br />Author: John Smith<br />Size: 2MB<br /> “我的作者” John Smith “我的尺码” 2MB 可以想象,每行的标题、作者和大小总是不同的 我的想法是查询以下内容,但我不擅长SQL查询,也不确定实际查询是什么样子 这就是我想做的: Within

我需要在MySQL中更新大约2000条记录

我从表“my_table”中有一列“my_content”,其值如下

Title: some title here<br />Author: John Smith<br />Size: 2MB<br />
“我的作者”

John Smith
“我的尺码”

2MB
可以想象,每行的标题、作者和大小总是不同的

我的想法是查询以下内容,但我不擅长SQL查询,也不确定实际查询是什么样子

这就是我想做的:

Within 'my_content' find everything that starts with "title:..." and ends with "...<br />au" and move it to 'my_title'
Within 'my_content' find everything that starts with "thor:..." and ends with "...<br />s" and move it to 'my_author'
Within 'my_content' find everything that starts with "ize:..." and ends with "...<br />" and move it to 'my_size'
在“我的内容”中找到所有以“标题:…”开头,以“…
au”结尾的内容,并将其移动到“我的标题” 在“我的内容”中找到所有以“thor:…”开头,以“…
s”结尾的内容,并将其移动到“我的作者” 在“我的内容”中,找到所有以“ize:…”开头,以“…
”结尾的内容,并将其移动到“我的大小”
我只是不知道如何编写查询来实现这一点


一旦所有内容都在新列中,我就可以找到并删除不再需要的内容,例如“thor:”等。

您可以使用
INSTR
查找分隔符的索引,并使用
子字符串
选择所需的部分。例如,作者可能是

SUBSTR(my_content,
       INSTR(my_content, "Author: ") + 8,
       INSTR(my_content, "Size: ") - INSTR(my_content, "Author: ") - 8)
您需要做更多的工作来修剪

和任何周围的空白。

请尝试以下操作:

SELECT SUBSTRING(SUBSTRING_INDEX(mycontent,'<br />',1),LOCATE('Title: ',mycontent)+7) as mytitle, 
SUBSTRING(SUBSTRING_INDEX(mycontent,'<br />',2),LOCATE('Author: ',mycontent)+8) as myauthor, 
SUBSTRING(SUBSTRING_INDEX(mycontent,'<br />',3),LOCATE('Size: ',mycontent)+6) as mysize 
FROM mytable;
选择子字符串(子字符串_索引(mycontent,
',1),定位('Title:',mycontent)+7)作为mytitle, SUBSTRING(SUBSTRING_INDEX(mycontent,
',2),将('Author:',mycontent)+8)定位为myauthor, 子字符串(子字符串索引(mycontent,
',3),将('Size:',mycontent)+6)定位为mysize 从mytable;
Hey Sel,谢谢您的回复。我刚刚意识到,实际上还有更多的内容,而不仅仅是移动内容。我应该告诉你这是一个Wordpress数据库。表名几乎是wp_posteta,列(mytitle、mysize和myauthor)都是与帖子相关的元盒内容。因此,每篇文章都有一个自定义的mycontent元框,我需要将其分为mytitle、mysize和myauthor。您的意思是想用字符串的提取更新列(mytitle、mysize和myauthor)?如果是这种情况,您可以使用
updatemytable set mytitle=SUBSTRING(SUBSTRING_INDEX(mycontent,
',1),LOCATE('Title:',mycontent)+7)
SELECT SUBSTRING(SUBSTRING_INDEX(mycontent,'<br />',1),LOCATE('Title: ',mycontent)+7) as mytitle, 
SUBSTRING(SUBSTRING_INDEX(mycontent,'<br />',2),LOCATE('Author: ',mycontent)+8) as myauthor, 
SUBSTRING(SUBSTRING_INDEX(mycontent,'<br />',3),LOCATE('Size: ',mycontent)+6) as mysize 
FROM mytable;