如何mysql剪切文本字段的结尾部分,然后移动到其他文本字段的开头



我需要将mysql的一个字段从文本转换为varchar(1000(,以防止它在磁盘上创建tmp表。但也有许多记录的长度超过1000。字段名称hometext。表中有其他字段名称正文(文本类型(

现在我想在转换之前将字符串的末尾部分移动到另一个字段名称"bodytext"。读取字段hometext并从字符编号999剪切到2部分A、B的末尾读取C部分中的字段正文

编辑表格,将A部分放回主页,并将B+C部分放回正文

我对php和mysql不太了解,所以有人能帮助吗

非常感谢

=之前的Sample_Table

field_hometext:

1aaaaa-bbbbbbb-dd

2aaa bbbbbbb


field_bodytext:

1ccccc

2cccc

=============================================

=Sample_Table affter将所有记录中长度超过8个字符的所有字符从field_hometext剪切并移动到field_bodytext

field_hometext:

1aaaaa-b

2aaa bbb


field_bodytext:

bbbbbb dd 1ccccc

bbbb 2cccc


感谢的帮助

您可以使用SUBSTRING提取field_hometext所需的字符数。

将所提取的字符集CONCAT到字段CCD_ 2。

// Return 1st 8 characters.
SUBSTRING('1aaaaa bbbbbbbdd', 1, 8) AS field_hometext // Output - 1aaaaa b
// Return substring starting from 9th character till the end 
// and prepend it to the beginning of field_bodytext
CONCAT(SUBSTRING('1aaaaa bbbbbbbdd', 9), ' ', '1ccccc') AS field_bodytext // Output - bbbbbbdd 1ccccc

,您的最终更新查询将如下所示

UPDATE sample_table SET
field_bodytext = CONCAT(SUBSTRING(field_hometext, 1000), ' ', field_bodytext),
field_hometext = SUBSTRING(field_hometext, 1, 999)
WHERE CHAR_LENGTH(field_hometext) >= 1000;

最新更新