【问题标题】:How to remove the space(more the two space) between two word in SQL [duplicate]如何删除SQL中两个单词之间的空格(更多的两个空格)[重复]
【发布时间】: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


【解决方案1】:

试试下面的

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

【讨论】:

  • 是的,我试过了。它的工作原理
【解决方案2】:

试试这个,

DECLARE @var NVARCHAR(500)='Software              Development'
SELECT @var AS NotTrim
SELECT Trimmed = REPLACE(REPLACE(REPLACE(@var,' ','<>'),'><',''),'<>',' ')

希望这会有所帮助。

【讨论】:

  • 是的。非常感谢
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
相关资源
最近更新 更多