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

时间:2015-11-10 18:31:58

标签: mysql sql concat

我使用perl -n unique input_file H200:hostname1,hostname2,hostname3 H400:hostname4,hostname5 H500:hostname6,hostname7 H700:hostname8 剪切字符串,并在MySQL中使用SUBSTR()在字符串末尾添加三个点。这是我的代码:

CONCAT()

我的问题是,上述代码将在所有结果之后全部SELECT CONCAT(SUBSTR(col, 1, 4), ' ...') AS new_col FROM table 。如果我想对超过4个字符的单词执行。假设这是我的表:

...

我想要输出

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

我怎样才能在MySQL中做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用CASE WHEN

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

答案 1 :(得分:2)

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

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