Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用T-SQL从字符串中删除重复空间_Sql_Sql Server_Database_Tsql - Fatal编程技术网

如何使用T-SQL从字符串中删除重复空间

如何使用T-SQL从字符串中删除重复空间,sql,sql-server,database,tsql,Sql,Sql Server,Database,Tsql,我有一根像“你好,世界”这样的线。我使用下面的代码从字符串中删除重复的空格。但它会从字符串中删除 SELECT ' Hello <> world ' AS Name INTO #Temp; SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Name)), ' ', '<>'), '><', ''), '<>', ' ') AS CleanName FROM #Temp; 选择“Hello world”作

我有一根像“你好,世界”这样的线。我使用下面的代码从字符串中删除重复的空格。但它会从字符串中删除

SELECT ' Hello  <>   world ' AS Name
INTO #Temp;

SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Name)), ' ', '<>'), '><', ''), '<>', ' ') AS CleanName
FROM #Temp;
选择“Hello world”作为名称
进入#温度;

选择REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Name)),'','>这项技术是可靠的,但如果您想保留
,则可以使用罕见的文本模式

示例

SELECT ltrim(rtrim(replace(replace(replace(Name,' ','†‡'),'‡†',''),'†‡',' ')))
FROM #Temp;
返回

Hello <> world
你好,世界

注意:ltrim(rtrim(…)
是可选的

使用此表达式,它依赖于不可打印的ASCII字符:

SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Name)),' ','CHAR(17)CHAR(18)'),'CHAR(18)CHAR(17)',''),'CHAR(17)CHAR(18)',' ') AS CleanName
FROM #Temp;
收益率:

Hello <> world
你好,世界

也许这可以帮助您:

declare @Name varchar(200)
select @Name = ' Hello  <>   world '
while charindex('  ',@Name)>0 select @Name=REPLACE(@Name,'  ',' ')
select @Name
declare@Name varchar(200)
选择@Name='Hello world'
当charindex(“”,@Name)>0时,选择@Name=REPLACE(@Name,,“”)
选择@Name

@ SRM:不是重复的,您所指的问题将删除所有空间,而OP希望保留字符串中间的非重复空间。