19 ответов:
просто замените его;
SELECT REPLACE(fld_or_variable, ' ', '')Edit Просто чтобы уточнить; его глобальная замена, нет необходимости
trim()или беспокоиться о нескольких пробелов:create table #t (c char(8), v varchar(8)) insert #t (c, v) values ('a a' , 'a a' ), ('a a ' , 'a a ' ), (' a a' , ' a a' ), (' a a ', ' a a ') select '''' + c + '''' [IN], '''' + replace(c, ' ', '') + '''' [OUT] from #t union all select '''' + v + '''', '''' + replace(v, ' ', '') + '''' from #t IN OUT 'a a ' 'aa' 'a a ' 'aa' ' a a ' 'aa' ' a a ' 'aa' 'a a' 'aa' 'a a ' 'aa' ' a a' 'aa' ' a a ' 'aa'
Если это обновление для таблицы, все, что вам нужно сделать, это запустить это обновление несколько раз, пока оно не повлияет на 0 строк.
update tableName set colName = REPLACE(LTRIM(RTRIM(colName)), ' ', ' ') where colName like '% %'
T-sql заменить http://msdn.microsoft.com/en-us/library/ms186862.aspx
заменить(val,' ',")
во-первых, создать образец таблицы и данные:
CREATE TABLE tbl_RemoveExtraSpaces ( Rno INT ,Name VARCHAR(100) ) GO INSERT INTO tbl_RemoveExtraSpaces VALUES (1,'I am Anvesh Patel') INSERT INTO tbl_RemoveExtraSpaces VALUES (2,'Database Research and Development ') INSERT INTO tbl_RemoveExtraSpaces VALUES (3,'Database Administrator ') INSERT INTO tbl_RemoveExtraSpaces VALUES (4,'Learning BIGDATA and NOSQL ') GOскрипт для выбора строки без лишних пробелов:
SELECT [Rno] ,[Name] AS StringWithSpace ,LTRIM(RTRIM(REPLACE(REPLACE(REPLACE([Name],CHAR(32),'()'),')(',''),'()',CHAR(32)))) AS StringWithoutSpace FROM tbl_RemoveExtraSpacesрезультат:
Rno StringWithSpace StringWithoutSpace ----------- ----------------------------------------- --------------------------------------------- 1 I am Anvesh Patel I am Anvesh Patel 2 Database Research and Development Database Research and Development 3 Database Administrator Database Administrator 4 Learning BIGDATA and NOSQL Learning BIGDATA and NOSQL
Если в строке есть несколько пробелов, то замена может работать неправильно. Для этого следует использовать следующую функцию.
CREATE FUNCTION RemoveAllSpaces ( @InputStr varchar(8000) ) RETURNS varchar(8000) AS BEGIN declare @ResultStr varchar(8000) set @ResultStr = @InputStr while charindex(' ', @ResultStr) > 0 set @ResultStr = replace(@InputStr, ' ', '') return @ResultStr ENDпример:
select dbo.RemoveAllSpaces('aa aaa aa aa a')выход:
aaaaaaaaaa
100% работающего
UPDATE table_name SET "column_name"=replace("column_name", ' ', ''); //Remove white space UPDATE table_name SET "column_name"=replace("column_name", '\n', ''); //Remove newline UPDATE table_name SET "column_name"=replace("column_name", '\t', ''); //Remove all tabможно использовать
"column_name"илиcolumn_nameспасибо
Subroto
это делает трюк удаления пробелов в строках:
UPDATE tablename SET columnname = replace(columnname, ' ', '');
только в случае, если вам нужно обрезать пробелы во всех столбцах, вы можете использовать этот скрипт, чтобы сделать это динамически:
--Just change table name declare @MyTable varchar(100) set @MyTable = 'MyTable' --temp table to get column names and a row id select column_name, ROW_NUMBER() OVER(ORDER BY column_name) as id into #tempcols from INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE IN ('varchar', 'nvarchar') and TABLE_NAME = @MyTable declare @tri int select @tri = count(*) from #tempcols declare @i int select @i = 0 declare @trimmer nvarchar(max) declare @comma varchar(1) set @comma = ', ' --Build Update query select @trimmer = 'UPDATE [dbo].[' + @MyTable + '] SET ' WHILE @i <= @tri BEGIN IF (@i = @tri) BEGIN set @comma = '' END SELECT @trimmer = @trimmer + CHAR(10)+ '[' + COLUMN_NAME + '] = LTRIM(RTRIM([' + COLUMN_NAME + ']))'+@comma FROM #tempcols where id = @i select @i = @i+1 END --execute the entire query EXEC sp_executesql @trimmer drop table #tempcols
Если вы хотите удалить пробелы, -, и другой текст из строки, то используйте следующее:
предположим, у вас есть номер мобильного телефона в вашей таблице, как '718-378-4957' или '7183784957' и вы хотите заменить и получить номер мобильного телефона, а затем использовать следующий текст.
select replace(replace(replace(replace(MobileNo,'-',''),'(',''),')',''),' ','') from EmployeeContactNumberрезультат :-- 7183784957
просто подсказка, в случае, если у вас возникли проблемы с функцией замены, у вас может быть тип данных, установленный в nchar (в этом случае это фиксированная длина, и она не будет работать).
чтобы сделать все ответы выше полными, в StackOverflow есть дополнительные сообщения о том, как обращаться со всеми пробелами (см. https://en.wikipedia.org/wiki/Whitespace_character для полного списка этих символов):
у меня была эта проблема сегодня, и замена / отделка сделала трюк..увидеть ниже.
update table_foo set column_bar = REPLACE(LTRIM(RTRIM(column_bar)), ' ', '')до и после :
old-bad: column_bar | New-fixed: column_bar ' xyz ' | 'xyz' ' xyz ' | 'xyz' ' xyz ' | 'xyz' ' xyz ' | 'xyz' ' xyz ' | 'xyz' ' xyz ' | 'xyz'
для удаления пробелов в строке влево и вправо. Для удаления места в середине используйте
Replace.можно использовать
RTRIM()для удаления пробелов справа иLTRIM()для удаления пробелов слева отсюда левые и правые пробелы удаляются следующим образом:SELECT * FROM table WHERE LTRIM(RTRIM(username)) = LTRIM(RTRIM("Bob alias baby"))
это полезно для меня:
CREATE FUNCTION dbo.TRIM(@String VARCHAR(MAX)) RETURNS VARCHAR(MAX) BEGIN RETURN LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@String,CHAR(10),'[]'),CHAR(13),'[]'),char(9),'[]'),CHAR(32),'[]'),'][',''),'[]',CHAR(32)))); END GO.
синтаксис для замены специальных символов:
REPLACE ( string_expression , string_pattern , string_replacement )например в строке "HelloReplaceThingsGoing" заменить слово заменяется на How
SELECT REPLACE('HelloReplaceThingsGoing','Replace','How'); GO
функциональная версия (udf), которая удаляет пробелы, cr, lf, вкладки или настраивается.
select Common.ufn_RemoveWhitespace(' 234 asdf wefwef 3 x ', default) as Sрезультат: '234asdfwefwef3x'
alter function Common.RemoveWhitespace ( @pString nvarchar(max), @pWhitespaceCharsOpt nvarchar(max) = null -- default: tab, lf, cr, space ) returns nvarchar(max) as /*-------------------------------------------------------------------------------------------------- Purpose: Compress whitespace Example: select Common.ufn_RemoveWhitespace(' 234 asdf wefwef 3 x ', default) as s -- Result: 234asdfwefwef3x Modified By Description ---------- ----------- -------------------------------------------------------------------- 2018.07.24 crokusek Initial Version --------------------------------------------------------------------------------------------------*/ begin declare @maxLen bigint = 1073741823, -- (2^31 - 1) / 2 (https://stackoverflow.com/a/4270085/538763) @whitespaceChars nvarchar(30) = coalesce( @pWhitespaceCharsOpt, char(9) + char(10) + char(13) + char(32)); -- tab, lf, cr, space declare @whitespacePattern nvarchar(30) = '%[' + @whitespaceChars + ']%', @nonWhitespacePattern nvarchar(30) = '%[^' + @whitespaceChars + ']%', @previousString nvarchar(max) = ''; while (@pString != @previousString) begin set @previousString = @pString; declare @whiteIndex int = patindex(@whitespacePattern, @pString); if (@whiteIndex > 0) begin declare @whitespaceLength int = nullif(patindex(@nonWhitespacePattern, substring(@pString, @whiteIndex, @maxLen)), 0) - 1; set @pString = substring(@pString, 1, @whiteIndex - 1) + iif(@whiteSpaceLength > 0, substring(@pString, @whiteIndex + @whiteSpaceLength, @maxLen), ''); end end return @pString; end go
Comments