我需要将SomeId限制为只有56个字符

时间:2016-02-01 23:37:04

标签: sql sql-server-2008-r2

我们需要以下逻辑来截断超过56个字符的任何内容。我们总是希望删除我们的解决方案所做的波形符,但我们不知道如何将SomeId的长度限制为56.

CASE WHEN CHARINDEX('~', isnull(SomeID,''))= 0 
THEN '1' 
ELSE isnull(RIGHT(isnull(SomeID,''), 
LEN(isnull(SomeID,'')) - CHARINDEX('~', isnull(SomeID,''))), '') END 

1 个答案:

答案 0 :(得分:0)

如果我理解正确,请使用LEFT()

LEFT(CASE WHEN SomeId LIKE '%~%'
          THEN RIGHT(SomeID, LEN(SomeId) - CHARINDEX('~', SomeId))
          ELSE '1'
     END, 56)

我稍微重新排列了逻辑以简化代码。您不需要NULL的所有检查。