我需要从db中选择一些主题..我使用下面的代码来选择昏迷分隔的主题列表。
GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR ', ') AS subjects,
没关系。它为我工作。它的输出是这样的。
数学,生理学,商业与管理会计研究,天主教
现在我需要将此字符串限制为35个字符,并且需要在字符串的末尾添加“...”。
就是这样。
Mathematics, Physiology, Business...
那么,我可以知道在选择查询时是否可以和mysql一起使用?
谢谢。
答案 0 :(得分:1)
尝试这样的事情,
SELECT IF(CHAR_LENGTH(subjects) > 35, CONCAT(LEFT(subjects,35), '...'), subjects),
...
FROM
(
SELECT GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR ', ') AS subjects,
...
FROM tableName
GROUP BY ...
) s
在获得角色的长度时,我宁愿使用CHAR_LENGTH
而不是LENGTH
,因为......
答案 1 :(得分:1)
您可以使用CASE
表达式来检查subjects
的{{3}}。如果它超过35个字符,那么您可以应用LENGTH()
和CONCAT()
来获取最后使用...
的新值:
select
case
when length(subjects) > 35
then concat(substr(subjects, 1, 35), '...')
else subjects end as subjects
from
(
select GROUP_CONCAT( DISTINCT subject_name SEPARATOR ', ') AS subjects
from yourtable
) src
请参阅SUBSTRING()
。
返回:
| SUBJECTS |
------------------------------------------
| Mathematics, Physiology, Business &... |
答案 2 :(得分:0)
将substring / concat连接到group_concat
结果的末尾concat(substring(group_concat(distinct s.subject_name SEPARATOR ', '), 35), '...') AS subjects,
通常,在使用框架时在应用程序中执行此操作会更容易。
答案 3 :(得分:0)
将结果存储在变量中,并在if子句中检查它是否超过32个字符。如果是这样,请选择它的前32个字符并将'...'连接到它。