Sql server 将数据合并到一个项目并替换超出范围的字符

Sql server 将数据合并到一个项目并替换超出范围的字符,sql-server,Sql Server,在我的sql server中,我有一个名为company的表,数据如下图所示。 我使用一个查询: STUFFselect'、'+a.companyname from从公司a中选择companyname作为XML路径,键入.value'.'、'NVARCHARMAX',1、2,以显示数据,行如下图所示。 但是,这个日期对我来说太长了,我想显示最多40个字符的数据。我可以使用LEFTcompanyname,40来显示结果,如下所示。 我的问题是:如何用…替换不完整的数据。。。? 备注:某些公司名称的

在我的sql server中,我有一个名为company的表,数据如下图所示。 我使用一个查询: STUFFselect'、'+a.companyname from从公司a中选择companyname作为XML路径,键入.value'.'、'NVARCHARMAX',1、2,以显示数据,行如下图所示。 但是,这个日期对我来说太长了,我想显示最多40个字符的数据。我可以使用LEFTcompanyname,40来显示结果,如下所示。 我的问题是:如何用…替换不完整的数据。。。? 备注:某些公司名称的长度不同,可能长也可能短,逗号符号也可能包含在某些公司名称中。

请尝试以下操作:

 CASE WHEN LEN(companyname) > 40 THEN LEFT(companyname,40) + '"..."'
      ELSE LEFT(companyname,40)
 END AS CompanyName

如果公司名称可能包含逗号,请考虑使用其他字符,如“。”作为定界符

case when   len(@companyname) > 40
     then   left(@companyname, 40 - charindex(',', reverse(left(@companyname,40))) + 1) 
            + '..'
     else   @companyname
     end