[SQL] SQL Server의 문자열에서 모든 공백을 제거
SQLSQL Server의 문자열에서 모든 공백을 제거
2008 SQL Server의 문자열에서 모든 공백을 제거하는 가장 좋은 방법은 무엇입니까?
LTRIM (RTRIM ( 'A B')는) 오른쪽에있는 모든 공백을 제거하고 문자열의 왼쪽,하지만 나는 또한 중간에 공백을 제거해야합니다.
해결법
-
==============================
1.간단하게 교체;
간단하게 교체;
SELECT REPLACE(fld_or_variable, ' ', '')
편집하다: 다시 한번 확인하기 위해; 자사의 글로벌 대체 어떤 트림 필요 () 또는 하나 char 또는 VARCHAR에 대해 여러 공간에 대한 걱정이 없다 :
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"
-
==============================
2.나는 대체 사용합니다
나는 대체 사용합니다
select REPLACE (' Hello , How Are You ?', ' ', '' )
바꾸다
-
==============================
3.이 테이블에 업데이트가있는 경우는 0 행에 영향을 미치는 될 때까지 당신이해야 할 모든이 업데이트를 여러 번 실행됩니다.
이 테이블에 업데이트가있는 경우는 0 행에 영향을 미치는 될 때까지 당신이해야 할 모든이 업데이트를 여러 번 실행됩니다.
update tableName set colName = REPLACE(LTRIM(RTRIM(colName)), ' ', ' ') where colName like '% %'
-
==============================
4.() 함수를 바꾸기 :
() 함수를 바꾸기 :
REPLACE(field, ' ', '')
-
==============================
5.이 블로그에서 가져온 참조 :
이 블로그에서 가져온 참조 :
첫째, 샘플 테이블과 데이터를 작성합니다 :
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
-
==============================
6.100 % 작업
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 지역
-
==============================
7.T-SQL http://msdn.microsoft.com/en-us/library/ms186862.aspx 교체
T-SQL http://msdn.microsoft.com/en-us/library/ms186862.aspx 교체
교체 (발, '', '')
-
==============================
8.여러 공백이 문자열이있는 경우, 다음 제대로 작동하지 않을 수 있습니다 대체합니다. 이를 위해 다음과 같은 기능을 사용할 수 있습니다.
여러 공백이 문자열이있는 경우, 다음 제대로 작동하지 않을 수 있습니다 대체합니다. 이를 위해 다음과 같은 기능을 사용할 수 있습니다.
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
-
==============================
9.이 문자열의 공백을 제거하는 트릭을 수행합니다
이 문자열의 공백을 제거하는 트릭을 수행합니다
UPDATE tablename SET columnname = replace(columnname, ' ', '');
-
==============================
10.모든 컬럼에 공백을 TRIM 할 필요가 그냥 경우에, 당신은 동적으로 할이 스크립트를 사용할 수 있습니다 :
모든 컬럼에 공백을 TRIM 할 필요가 그냥 경우에, 당신은 동적으로 할이 스크립트를 사용할 수 있습니다 :
--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
-
==============================
11.당신이 공백을 제거하려는 경우, -, 그리고 문자열에서 다른 텍스트는 다음을 사용 :
당신이 공백을 제거하려는 경우, -, 그리고 문자열에서 다른 텍스트는 다음을 사용 :
당신은 '718-378-4957'또는 같은 테이블에 휴대 전화 번호가 있다고 가정 '7183784957'당신은 교체하고 휴대 전화 번호는 다음 텍스트 다음 사용 얻을합니다.
select replace(replace(replace(replace(MobileNo,'-',''),'(',''),')',''),' ','') from EmployeeContactNumber
결과 : - 7183784957을
-
==============================
12.당신은 대체 기능에 문제가있는 경우에 그냥 팁은, 당신은 NCHAR에 대한 데이터 유형을 설정해야 할 수도 있습니다 (이 고정 길이 인 경우와는 작동하지 않습니다).
당신은 대체 기능에 문제가있는 경우에 그냥 팁은, 당신은 NCHAR에 대한 데이터 유형을 설정해야 할 수도 있습니다 (이 고정 길이 인 경우와는 작동하지 않습니다).
-
==============================
13.전체 위의 모든 답변을하려면 (이 문자의 전체 목록 https://en.wikipedia.org/wiki/Whitespace_character 참조) 공백 문자를 모두 처리하는 방법에 StackOverflow에 대한 자세한 글이 있습니다
전체 위의 모든 답변을하려면 (이 문자의 전체 목록 https://en.wikipedia.org/wiki/Whitespace_character 참조) 공백 문자를 모두 처리하는 방법에 StackOverflow에 대한 자세한 글이 있습니다
-
==============================
14.((COLUMN_NAME, CHAR (13) ''), CHAR (10) '으로 대체) 대체
((COLUMN_NAME, CHAR (13) ''), CHAR (10) '으로 대체) 대체
-
==============================
15.이 나를 위해 유용합니다 :
이 나를 위해 유용합니다 :
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
.
-
==============================
16.오늘이 문제를했고 교체 / 트림 아래 trick..see했다.
오늘이 문제를했고 교체 / 트림 아래 trick..see했다.
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'
-
==============================
17.왼쪽과 오른쪽 문자열의 공백을 제거합니다. 중간 사용 공간이 교체 제거합니다.
왼쪽과 오른쪽 문자열의 공백을 제거합니다. 중간 사용 공간이 교체 제거합니다.
다음과 같이 제거 왼쪽 따라서 좌우 공간에서 공백을 제거 할 권리와 LTRIM ()에서 공백을 제거하는 RTRIM ()를 사용할 수 있습니다 :
SELECT * FROM table WHERE LTRIM(RTRIM(username)) = LTRIM(RTRIM("Bob alias baby"))
-
==============================
18.특정 문자를 대체 구문 :
특정 문자를 대체 구문 :
REPLACE ( string_expression , string_pattern , string_replacement )
문자열의 예를 들어 방법으로 대체 단어를 교체 "HelloReplaceThingsGoing"
SELECT REPLACE('HelloReplaceThingsGoing','Replace','How'); GO
-
==============================
19.기능성 버전 (UDF)를 제거 공간, CR, LF, 탭 또는 그 구성.
기능성 버전 (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
-
==============================
20.몇 가지 이유를 들어, 하나의 문자열마다 작동을 대체합니다. 나는이 "시험 MSP"와 같은 문자열을했고 나는 하나의 공간을 떠나고 싶어.
몇 가지 이유를 들어, 하나의 문자열마다 작동을 대체합니다. 나는이 "시험 MSP"와 같은 문자열을했고 나는 하나의 공간을 떠나고 싶어.
나는 그러나 일부 수정과, @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
그 때 나는이 결과를 가지고 : 테스트 MSP
내가 그랬던 것처럼 경우에 누군가가 그것을 필요로하는 경우 여기에 게시.
에 실행 : 2016 마이크로 소프트 SQL 서버 (SP2)
-
==============================
21.확인하고 아래 스크립트를 사용해보십시오 (단위 테스트) -
확인하고 아래 스크립트를 사용해보십시오 (단위 테스트) -
--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;
-
==============================
22.그 사람들이 REPLACE 하나의 함수 참조 유지 보인다. 아니면 심지어 많은 통화 기능을 대체합니다. 당신이 공간의 알 수없는 수의 동적 출력이있을 때, 그것은 일을 못해. 누구 정기적으로이 문제를 다룬다는 정상적으로 만하지 ALL, 하나의 공백을 제거합니다 REPLACE 것을 알고있다. 그리고 LTRIM 및 RTRIM 같은 문제를 갖고있는 것 같다. 마이크로 소프트에 둡니다. 여기 ALL CHAR (32)의 값 (공간)을 제거하는 WHILE 루프를 사용하는 샘플 출력이다.
그 사람들이 REPLACE 하나의 함수 참조 유지 보인다. 아니면 심지어 많은 통화 기능을 대체합니다. 당신이 공간의 알 수없는 수의 동적 출력이있을 때, 그것은 일을 못해. 누구 정기적으로이 문제를 다룬다는 정상적으로 만하지 ALL, 하나의 공백을 제거합니다 REPLACE 것을 알고있다. 그리고 LTRIM 및 RTRIM 같은 문제를 갖고있는 것 같다. 마이크로 소프트에 둡니다. 여기 ALL CHAR (32)의 값 (공간)을 제거하는 WHILE 루프를 사용하는 샘플 출력이다.
DECLARE @INPUT_VAL VARCHAR(8000) DECLARE @OUTPUT_VAL VARCHAR(8000) SET @INPUT_VAL = ' C A ' SET @OUTPUT_VAL = @INPUT_VAL WHILE CHARINDEX(CHAR(32), @OUTPUT_VAL) > 0 BEGIN SET @OUTPUT_VAL = REPLACE(@INPUT_VAL, CHAR(32), '') END PRINT 'START:' + @INPUT_VAL + ':END' PRINT 'START:' + @OUTPUT_VAL + ':END'
여기에 위의 코드의 출력입니다 :
START: C A :END START:CA:END
이제 한 단계 더 걸릴하고 UPDATE 또는 SELECT 문을 사용하는 UDF로 변경합니다.
CREATE FUNCTION udf_RemoveSpaces (@INPUT_VAL VARCHAR(8000)) RETURNS VARCHAR(8000) AS BEGIN DECLARE @OUTPUT_VAL VARCHAR(8000) SET @OUTPUT_VAL = @INPUT_VAL -- ITTERATE THROUGH STRING TO LOOK FOR THE ASCII VALUE OF SPACE (CHAR(32)) REPLACE IT WITH BLANK, NOT NULL WHILE CHARINDEX(CHAR(32), @OUTPUT_VAL) > 0 BEGIN SET @OUTPUT_VAL = REPLACE(@INPUT_VAL, CHAR(32), '') END RETURN @OUTPUT_VAL END
그런 다음 SELECT 또는 INSERT 문에서 기능을 활용 :
UPDATE A SET STATUS_REASON_CODE = WHATEVER.dbo.udf_RemoveSpaces(STATUS_REASON_CODE) FROM WHATEVER..ACCT_INFO A WHERE A.SOMEVALUE = @SOMEVALUE INSERT INTO SOMETABLE (STATUS_REASON_CODE) SELECT WHATEVER.dbo.udf_RemoveSpaces(STATUS_REASON_CODE) FROM WHATEVER..ACCT_INFO A WHERE A.SOMEVALUE = @SOMEVALUE
from https://stackoverflow.com/questions/10432086/remove-all-spaces-from-a-string-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버 쿼리에서 0과 NULL 교체 (0) | 2020.04.23 |
---|---|
[SQL] MySQL의에서 SET 자동 커밋 = 1 START의 TRANSACTION의 차이는 (유무 내가 뭔가를 놓친?) (0) | 2020.04.23 |
[SQL] 어떻게 MySQL의에서 선택에서 삭제? (0) | 2020.04.23 |
[SQL] 나는 오라클 SQL에서 BLOB에서 텍스트 내용을 얻는 방법 (0) | 2020.04.23 |
[SQL] MySQL의에서이 연산자는 <=> 무엇입니까? (0) | 2020.04.23 |