在SQL Server 2008中删除字符串中的所有空格的最佳方法是什么?
LTRIM(RTRIM(' a b '))将删除字符串右侧和左侧的所有空格,但我还需要删除中间的空格。
在SQL Server 2008中删除字符串中的所有空格的最佳方法是什么?
LTRIM(RTRIM(' a b '))将删除字符串右侧和左侧的所有空格,但我还需要删除中间的空格。
当前回答
取代()函数:
REPLACE(field, ' ', '')
其他回答
这是去除字符串上的空格的技巧:
UPDATE
tablename
SET
columnname = replace(columnname, ' ', '');
如果你想从字符串中删除空格,-和另一个文本,那么使用以下命令:
假设您的表格中有一个手机号码,如“718-378-4957”或 ' 7183784957',你想要替换并获得手机号码,然后使用下面的文本。
select replace(replace(replace(replace(MobileNo,'-',''),'(',''),')',''),' ','') from EmployeeContactNumber
结果:——7183784957
检查和尝试下面的脚本(单元测试)-
--Declaring
DECLARE @Tbl TABLE(col_1 VARCHAR(100));
--Test Samples
INSERT INTO @Tbl (col_1)
VALUES
(' EY y
Salem')
, (' EY P ort Chennai ')
, (' EY Old Park ')
, (' EY ')
, (' EY ')
,(''),(null),('d
f');
SELECT col_1 AS INPUT,
LTRIM(RTRIM(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(col_1,CHAR(10),' ')
,CHAR(11),' ')
,CHAR(12),' ')
,CHAR(13),' ')
,CHAR(14),' ')
,CHAR(160),' ')
,CHAR(13)+CHAR(10),' ')
,CHAR(9),' ')
,' ',CHAR(17)+CHAR(18))
,CHAR(18)+CHAR(17),'')
,CHAR(17)+CHAR(18),' ')
)) AS [OUTPUT]
FROM @Tbl;
我知道最初的问题是关于简单地替换空格,但如果你需要替换所有空白,你可以使用TRANSLATE函数(自Sql Server 2019以来)将给定的字符列表转换为更容易替换的内容。然后用REPLACE函数包装它。
这样可以避免重复调用:
DECLARE @Whitespace CHAR(4) = CHAR(0) + CHAR(9) + CHAR(13) + CHAR(10);
SELECT REPLACE(
TRANSLATE(' TEST ', @Whitespace, ' '),
' ', '');
从左到右删除字符串中的空格。要消除中间空间,请使用Replace。
您可以使用RTRIM()从右边删除空格,使用LTRIM()从左边删除空格,因此左右空格被删除如下:
SELECT * FROM table WHERE LTRIM(RTRIM(username)) = LTRIM(RTRIM("Bob alias baby"))