在 MariaDB 中截断文本并追加省略号
本文展示在 MariaDB 中截断文本并在后面添加省略号的技术。
发布于
有时,您可能会发现数据库列中返回的文本量太长。您可能只想返回该文本的一小段,后跟一个省略号或三个点。
在很多案例种,我们都可以用到这一点,比如博客列表的摘要,文章简介等。
在 MariaDB 种,您可以很轻松的做到这一点。下面给出了一个几个示例。
演示数据
假设我们有一个 notes
表,其中包含以下数据行:
+----+--------------------------------------------+
| id | note |
+----+--------------------------------------------+
| 1 | The quick brown fox jumps over a lazy dog. |
| 2 | Hello World! |
+----+--------------------------------------------+
截断文本
如果想将文本截断到指定的长度,您可以使用 LEFT()
函数。 LEFT()
接收两个参数,第一个参数是需要截断的文本,第二个参数保留字符的个数。
下面的语句将 note
列截断为 20 个字符:
SELECT
id,
note,
LEFT(note, 20) "Truncate"
FROM notes;
输出:
+----+--------------------------------------------+----------------------+
| id | note | Truncate |
+----+--------------------------------------------+----------------------+
| 1 | The quick brown fox jumps over a lazy dog. | The quick brown fox |
| 2 | Hello World! | Hello World! |
+----+--------------------------------------------+----------------------+
动态截断
如果文本长度超过特定的长度时,就截断文本并追加省率号。如果文本长度没有超过特定的长度,就使用源文本。这可以通过使用 IF
函数条件判断做到。
下面的语句展示了如果文本长度超过 20 个字符就截断文本并追加省率号,否则返回源文本。
SELECT
id,
note,
IF(CHAR_LENGTH(note) > 20,
CONCAT(LEFT(note, 20),"..."),
note) "Truncate"
FROM notes;
输出:
+----+--------------------------------------------+-------------------------+
| id | note | Truncate |
+----+--------------------------------------------+-------------------------+
| 1 | The quick brown fox jumps over a lazy dog. | The quick brown fox ... |
| 2 | Hello World! | Hello World! |
+----+--------------------------------------------+-------------------------+
在这个示例中,我们使用 CHAR_LENGTH()
函数获取文本的长度,并使用 CHAR_LENGTH(note) > 20
表达式检查文本你的长度是否大于 20,然后使用 IF()
函数根据条件表达式的结果在源文本和截断文本之间做出选择。 当文本长度超出时, 使用 LEFT()
函数截断文本,并使用 CONCAT()
将省率号添加到文本后面。
结论
本文展示了在 MariaDB 中截断文本并在后面添加省略号的技术。 我们用到了 IF()
, CHAR_LENGTH()
, LEFT()
, CONCAT()
函数。