【发布时间】:2017-11-22 15:10:07
【问题描述】:
declare @var nvarchar(500)='Software Development'
select @var as NotTrim
select LTRIM(RTRIM(@var)) as Trim
期望输出是“软件开发”(两个词之间只有一个)
【问题讨论】:
标签: sql sql-server tsql
declare @var nvarchar(500)='Software Development'
select @var as NotTrim
select LTRIM(RTRIM(@var)) as Trim
期望输出是“软件开发”(两个词之间只有一个)
【问题讨论】:
标签: sql sql-server tsql
试试下面的
SELECT
s,
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(s,' ',' ^'),'^ ',''),'^','')))
FROM (SELECT ' Q W E ' s) q
^ - 你可以使用任何不包含在你的字符串中的符号。
这个方法我在论坛sql.ru找到的。
此方法将任意数量的空格替换为一个空格。这个方法我用过很多次,觉得效果不错。
你的例子
declare @var nvarchar(500)='Software Development'
select @var as NotTrim
select LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(@var,' ',' ^'),'^ ',''),'^',''))) as Trim
你可以逐步看到它是如何工作的
SELECT
s,
-- step 1 - add special char before to each spaces
REPLACE(s,' ',' ^'),
-- step 2 - delete special char and space after this special char
REPLACE(REPLACE(s,' ',' ^'),'^ ',''),
-- step 3 - delete special chars
REPLACE(REPLACE(REPLACE(s,' ',' ^'),'^ ',''),'^',''),
-- step 4 - delete start and end spaces if you need it
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(s,' ',' ^'),'^ ',''),'^','')))
FROM (SELECT ' Q W E ' s) q
【讨论】:
试试这个,
DECLARE @var NVARCHAR(500)='Software Development'
SELECT @var AS NotTrim
SELECT Trimmed = REPLACE(REPLACE(REPLACE(@var,' ','<>'),'><',''),'<>',' ')
希望这会有所帮助。
【讨论】: