sql-server - SQL Server - 带长度截断的字符串分隔

标签 sql-server string t-sql

所以我有一个来自搜索的字符串,它可以包含多个单词,我想将单词截断为 10 个字符,即

DECLARE @SearchString varchar(255) = 'Administration Duplication'

变成:'Administra Duplicatio'

最佳答案

来自here只需少量修改:

Create Function dbo.[getFirstTenCharacters]
(
   @String Varchar(Max) 
)
RETURNS Varchar(Max)
BEGIN
Declare @Xml Xml
Declare @firsttenletter Varchar(Max)
Declare @delimiter Varchar(5)

SET @delimiter=' '
SET @Xml = cast(('<a>'+replace(@String,@delimiter,'</a><a>')+'</a>') AS XML)

;With CTE AS (SELECT A.value('.', 'varchar(max)') as [Column]
FROM @Xml.nodes('a') AS FN(a) )
SELECT @firsttenletter =Stuff((SELECT ' ' + LEFT([Column],10)
FROM CTE
FOR XML PATH('') ),1,0,'')

RETURN (@firsttenletter)
END
GO


SELECT dbo.[getFirstTenCharacters]('Administration Duplication');

<强> WORKING DEMO

enter image description here

关于sql-server - SQL Server - 带长度截断的字符串分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36333199/

相关文章:

sql-server - 带有多个子查询的 SELECT 查询计数

sql-server - GORM 和 SQL Server : auto-incrementation does not work

java - 按之间的数字分割字符串

在 Swift 中使用 String 的 iOS 8 内存泄漏

.net - 用于跟踪已删除记录的删除触发器的替代方案

c# - 如何使用多线程为集合中的每个项目调用存储过程

PHP Mysql - 在 Select 语句中使用变量作为列名

c++ - 我如何在 C++ 中将十六进制值解码为 ASCII

sql - 如果添加 WHERE 子句,LEFT JOIN 不返回任何结果?

SQL Server -XML 节点不返回多条记录