我需要在MySQL中更新大约2000条记录
我在表'my_table'中有一个'my_content'列,其中包含以下值
Title: some title here<br />Author: John Smith<br />Size: 2MB<br />
我创建了3个新列(my_title,my_author和my_size),现在我需要像这样分离'my_content'的内容
'my_title'
some title here
'my_author'
John Smith
'my_size'
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'
我只是不知道如何编写查询来执行此操作。
一旦所有内容都在新列中,我就可以找到并删除不再需要的内容,例如'thor:'等。
答案 0 :(得分:0)
您可以使用INSTR
查找分隔符的索引,并使用SUBSTRING
选择所需的部分。所以,例如,作者将是
SUBSTR(my_content,
INSTR(my_content, "Author: ") + 8,
INSTR(my_content, "Size: ") - INSTR(my_content, "Author: ") - 8)
你需要做更多的工作来修剪<br/>
和任何周围的空白。
答案 1 :(得分:0)
请尝试以下方法:
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;