【问题标题】:Substring sql server [duplicate]子字符串sql server [重复]
【发布时间】:2018-05-03 20:34:26
【问题描述】:

我想在 8 个字符后显示,如何通过substring 来实现。 联系人姓名为amjad habib,我想显示amjad hab...

SELECT SUBSTRING(contractname, 1, 8)
from contracts
where contractid = 613

【问题讨论】:

  • substring(contractname, 9, len(contractname))
  • 如何在8个字符后显示点?
  • 请注意,大多数在 SO 上提供答案的专业人士都渴望获得声誉积分。 Please read this: someone-answers。也可以看看您的旧问题。谢谢!

标签: sql sql-server string tsql


【解决方案1】:

这会将您的字符串剪切到您可以指定的最大长度。仅在字符串过长并因此被截断的情况下才附加点。较短的字符串“按原样”显示:

DECLARE @tbl TABLE(TheName VARCHAR(100));
INSERT INTO @tbl VALUES('short'),('exactly8'),('something longer');

DECLARE @MaxLength INT=8;

SELECT TheName 
      ,LEFT(TheName,@MaxLength) + CASE WHEN LEN(TheName)>@MaxLength THEN '...' ELSE '' END AS CutToMaxLength 

FROM @tbl

结果

TheName               CutToMaxLength
short                 short
exactly8              exactly8
something longer      somethin...

【讨论】:

  • 小毛病:当截断的字符串 + 点比未截断的字符串长时。我会使用 2 个变量而不是 @MaxLength,即 @CutOffAt = 11@CutOffTo = 8
  • @steenbergh,如果您需要一个专用的最大长度包括点,我会定义一个变量@truncSign,其中包含...,然后使用它的@987654328 @ 在计算中......但这相当复杂;-)
猜你喜欢
  • 2014-03-21
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 2016-05-18
  • 2017-12-10
相关资源
最近更新 更多