如果字符串太长则运行 CONCAT()

If string was too long then CONCAT() runs

我使用 SUBSTR() 剪切字符串,并使用 MySQL 中的 CONCAT() 在字符串末尾添加三个点。这是我的代码:

SELECT CONCAT(SUBSTR(col, 1, 4), ' ...') AS new_col FROM table

我的问题是,上面的代码在所有结果之后都会...。如果我想对超过 4 个字符的单词执行 。假设这是我的 table:

// table
+----+-----------+
| id |    col    |
+----+-----------+
| 1  | yellow    |
| 2  | blue      |
| 3  | green     |
| 4  | red       |
| 5  | grey      |
| 6  | brown     |
+----+-----------+

我想要这个输出:

+-----------+
| yell ...  |
| blue      |
| gree ...  |
| red       |
| grey      |
| brow ...  |
+-----------+

我如何在 MySQL 中做到这一点?

您可以使用 CASE WHEN:

SELECT 
  CASE WHEN LENGTH(col) > 4 THEN CONCAT(LEFT(col, 4), ' ...')
       ELSE col
  END AS new_col 
FROM table

http://sqlfiddle.com/#!9/983e3/2

SELECT id,
CONCAT(SUBSTR(col, 1, 4), IF(LENGTH(col)>4,' ...','')) AS new_col 
FROM `table`