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