在 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() 函数。