我需要将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;