MySQL移除列{n中的n个单词之后的所有内容

时间:2018-07-25 13:19:33

标签: mysql

我的桌子上有5000多个条目,基本上我想用摘录替换文本。因此,“文本”列通常在1000到2000个单词之间。我希望每个单元格在80个单词后被删减。另外,最好在80个单词之后添加“阅读更多...”之类的内容。 MySQL查询可以吗?

4 个答案:

答案 0 :(得分:1)

从MySQL级别执行此操作不是一个好主意。这是关于VIEW层的,因此应该在从数据库读取数据并将其呈现的地方进行编程。 在PHP中,可以使用

完成
function cutStringAfterWords($phrase,$max_words){
    $phrase_array = explode(' ',$phrase);
    if(count($phrase_array) > $max_words && $max_words > 0)
        $phrase = implode(' ',array_slice($phrase_array, 0, $max_words)).'...';
    return $phrase;
}

echo cutStringAfterWords($largeText,80).' Read more...';

,但我相信大多数语言都有它们的等效语言。

编辑:举了一个例子,在80个单词后删减。您可以简单地替换函数中的3个点以放置“始终读取”,或删除函数中的3个点,并在每个截断的文本之后手动添加“ Read More ...”字符串

答案 1 :(得分:0)

您可以尝试使用正则表达式。

select REGEXP_SUBSTR(your_column_name,'(.+?\\s+|.+?){1,80}')
from your_table_name

答案 2 :(得分:0)

有一个不错的MySQL string function SUBSTRING_INDEX,您可以像这样使用它来获得所需的结果:

更新your_table SET your_text_field =(从your_table中选择SUBSTRING_INDEX(your_text_field,'',80)WHERE text_id = some_id)WHERE text_id = some_id;

要添加“更多信息。”,您可以使用MySQL CONCAT

此外,我建议您在开始实验之前备份表。

答案 3 :(得分:-1)

执行以下查询以更新前80个字符的所有记录

update your_table_name set column_name=SUBSTRING_INDEX(column_name, ' ', 80)

由于您需要文字,因此已用SUBSTRING_INDEX更新