0

我需要在 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' 的内容

'我的标题'

some title here

“我的作者”

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'

我只是不知道如何编写查询来执行此操作。

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

4

2 回答 2

0

您可以使用INSTR来查找分隔符的索引并SUBSTRING选择所需的部分。因此,例如,作者将是

SUBSTR(my_content,
       INSTR(my_content, "Author: ") + 8,
       INSTR(my_content, "Size: ") - INSTR(my_content, "Author: ") - 8)

您需要更多的工作来修剪<br/>和任何周围的空白。

于 2012-06-20T01:03:42.567 回答
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;
于 2012-06-20T01:52:16.817 回答