모든 공백을 제거하시겠습니까 문자열으로 SQL Server 2008년 에서 가장 좋은 방법은 무엇입니까?
'우트림 (트림 (& # 39. a b & # 39;)) '스페이스 선수단 모두 분리하십시오 아니하였으매 오른쪽과 왼쪽 문자열의 근데 중간에 스페이스에도 분리하십시오 필요가 있다.
단순히 바꾸시겠습니까.
SELECT REPLACE(fld_or_variable, ' ', '')
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"
최초로 만드시겠습니까 샘플링합니다 테이블 및 data:*
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
apc® 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" " 사용할 수 있습니다.
감사합니다
서브로토
이 높여줍니까 제거하는 것이 있는 공간이 문장열:
UPDATE
tablename
SET
columnname = replace(columnname, ' ', '');
여러 개 있으면 화이트 스페이스 (문자열으로 관심용 복귀시킴 제대로 작동하지 않을 수 있습니다. 이를 위해 이 같은 기능을 사용해야 합니다.
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
스택 오버플로 같은 추가적인 문제가 있어 관련 글 완료하십시오 모든 답을 할 수 있도록 처리하는 방법에 대한 모든 공백 문자 (참조 (https://en.wikipedia.org/wiki/Whitespace_character) 이 전체 목록은 자):
s = 1 - # 12600716 36.5590 https://stackoverflow.com/questions/3374888/tsql-2008-using-ltrimrtrim-and-still-have-spaces-in-the-data/12600716? s = 2 - # 15215094 36.4102 https://stackoverflow.com/questions/15214848/how-do-i-remove-non-breaking-spaces-from-a-column-in-sql-server/15215094?
그냥 모든 열 필요가 있는 경우, 이 공간에 트리밍할 못하며창조된 스크립트입니다 에셋을 동적으로 사용할 수 있습니다.
--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
또 다른 지루려면 스케쳐내 공백, - 의 텍스트 문자열을 사용할 다음과 같다.
& # 39 에 있다고 가정해 봅시다. 718-378-4957 & # 39 표, 휴대폰 번호 등 또는 & # 39. 7183784957 & # 39. 이동전화 번호를 사용할 수 있으며, 복귀시킴 하려면 다음과 같은 텍스트.
select replace(replace(replace(replace(MobileNo,'-',''),'(',''),')',''),' ','') from EmployeeContactNumber
7183784957 결과:.
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
.
난 이미, 오늘 이 문제를 제대로 켜졌습니까 교체 / 트리밍할 트리크리스 같습니다.
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'
분리하십시오 공간에 문자열으로 왼쪽 및 오른쪽. 중학교 지루려면 공간을 사용하여 굈 '.'
'공백' () 에서 사용할 수 있습니다 () '와' 우트림 트림 지루려면 지루려면 왼쪽에서 오른쪽 왼쪽 및 오른쪽 공간을 업그레이드됨 공백이 제거된 다음과 같습니다.
SELECT * FROM table WHERE LTRIM(RTRIM(username)) = LTRIM(RTRIM("Bob alias baby"))
기능 버전 (udf) 를 제거하는 공간, cr, lf, 탭들 또는 구성할 수 있습니다.
select Common.ufn_RemoveWhitespace(' 234 asdf wefwef 3 x ', default) as S
결과:. # 39, & # 39 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
몇 가지 이유로 한 문자열 바꾸기 때마다 함께 사용할 수 있습니다. 난 이미 이렇게 빨리, 빨리, Test& 문자열으로 " &;;;;;;;; 빨리 빨리, 빨리, 빨리 & & & & &;;;;; 빨리 빨리, 빨리, 빨리, 빨리 & & & & MSP&quo *;; 남겨두십시오 공백을 하나만 보고 싶습니다.
내가 외곽진입 @Farhan 사용할 수 있는 한 갖추고 있지만, 일부 수정:
CREATE FUNCTION ReplaceAll
(
@OriginalString varchar(8000),
@StringToRemove varchar(20),
@StringToPutInPlace varchar(20)
)
RETURNS varchar(8000)
AS
BEGIN
declare @ResultStr varchar(8000)
set @ResultStr = @OriginalString
while charindex(@StringToRemove, @ResultStr) > 0
set @ResultStr = replace(@ResultStr, @StringToRemove, @StringToPutInPlace)
return @ResultStr
END
그럼 내가 이렇게 내 업데이트하십시오 실행하십시오
UPDATE tbTest SET Description = dbo.ReplaceAll(Description, ' ', ' ') WHERE ID = 14225
그럼 내가 맡을게 결과:.
경우에 따라 필요할 경우 여기를 글을 누군가가 믿엇어요
실행되는: Microsoft SQL Server 2016년 (SP2)