如何使用SQL Server截断字符串

San*_*ikh 97 t-sql sql-server

我在SQL Server中有大字符串.我想将该字符串截断为10或15个字符

原始字符串

this is test string. this is test string. this is test string. this is test string.
Run Code Online (Sandbox Code Playgroud)

期望的字符串

this is test string. this is ......
Run Code Online (Sandbox Code Playgroud)

Tar*_*ryn 146

如果您只想返回长字符串的几个字符,可以使用:

select 
  left(col, 15) + '...' col
from yourtable
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo.

这将返回字符串的前15个字符,然后将其连接...到结尾.

如果你想确保小于15的字符串没有得到,...那么你可以使用:

select 
  case 
    when len(col)>=15
    then left(col, 15) + '...' 
    else col end col
from yourtable
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo

  • 如果 col 的长度正好是 15,它会在执行 left(col,15) 时获取整个字符串,然后将 '...' 放在最后。当然更好的解决方案是检查'when len(col) > 15'。 (3认同)
  • 如果原始字符串少于15个字符,则在不适用时仍会附加``` (2认同)

sna*_*ton 28

您可以使用

LEFT(column, length)
Run Code Online (Sandbox Code Playgroud)

要么

SUBSTRING(column, start index, length)
Run Code Online (Sandbox Code Playgroud)

  • 这个问题现在是找到如何在tsql中截断字符串的答案的最简单方法.如果这个人没有问过它,那么我将浏览一些MSDN文章并立即讨厌我的生活...... (82认同)
  • 另外,MSDN不使用单词**TRUNCATE**来描述任一函数的描述 (9认同)
  • @snaplemouton; 猜猜是什么,当搜索这个问题/答案是在结果的顶部,这节省了我很多时间. (8认同)
  • @snaplemouton提出关于简单事物的问题可能是"坏事"(如答案之前很容易找到的那样),但结果仍然很好.我的意思是,SO旨在为各种问题提供答案(即使是那些询问其他容易找到问题的人). (4认同)
  • @snaplemouton,我在Google上找到了这个答案.请停止在StackOverflow上告诉人们谷歌的事情,因为未来的Google员工会看到它.此网站在很大程度上存在于Google搜索结果中. (4认同)

小智 5

您还可以使用 Cast() 操作:

 Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name
Run Code Online (Sandbox Code Playgroud)