带点的子串

GST*_*TAR 2 php mysql sql

我正在使用SUBSTRING函数来检索邮件正文的"摘录":

SELECT m.id, m.thread_id, m.user_id, SUBSTRING(m.body, 1, 100) AS body, m.sent_at
FROM message m;
Run Code Online (Sandbox Code Playgroud)

我想要做的是在子串的末尾添加3个点,但前提是源字符串超过我的上限(100个字符),即子串必须切断字符串.如果源字符串少于100个字符,则无需在末尾添加任何点.

我使用PHP作为我的脚本语言.

OMG*_*ies 8

这可以在查询中完成,而不是PHP,使用:

SELECT m.id, m.thread_id, m.user_id, 
       CASE 
         WHEN CHAR_LENGTH(m.body) > 100 THEN CONCAT(SUBSTRING(m.body, 1, 100), '...')
         ELSE m.body
       END AS body, 
       m.sent_at
  FROM MESSAGE m
Run Code Online (Sandbox Code Playgroud)

三个尾随点的术语是"省略号".