如果字符串太长则运行 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`
我使用 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`