[SQL] SQL 방법은 하나의 공백으로 반복 공백을 대체
SQLSQL 방법은 하나의 공백으로 반복 공백을 대체
이 일을 더 우아한 방법이있다. 나는 하나의 공백으로 반복 공백을 대체 할 ....
declare @i int
set @i=0
while @i <= 20
begin
update myTable
set myTextColumn = replace(myTextColumn, ' ', ' ')
set @i=@i+1
end
(그 SQL 서버 2000 -하지만 일반적인 SQL을 선호하는 것)
해결법
-
==============================
1.여기 세 적용을 대체하여 하나의 공간으로 복수의 공간을 축소하는 간단한 세트 기반 방법이다.
여기 세 적용을 대체하여 하나의 공간으로 복수의 공간을 축소하는 간단한 세트 기반 방법이다.
DECLARE @myTable TABLE (myTextColumn VARCHAR(50)) INSERT INTO @myTable VALUES ('0Space') INSERT INTO @myTable VALUES (' 1 Spaces 1 Spaces. ') INSERT INTO @myTable VALUES (' 2 Spaces 2 Spaces. ') INSERT INTO @myTable VALUES (' 3 Spaces 3 Spaces. ') INSERT INTO @myTable VALUES (' 4 Spaces 4 Spaces. ') INSERT INTO @myTable VALUES (' 5 Spaces 5 Spaces. ') INSERT INTO @myTable VALUES (' 6 Spaces 6 Spaces. ') select replace( replace( replace( LTrim(RTrim(myTextColumn)), ---Trim the field ' ',' |'), ---Mark double spaces '| ',''), ---Delete double spaces offset by 1 '|','') ---Tidy up AS SingleSpaceTextColumn from @myTable
귀하의 업데이트 문은 지금 기준으로 설정할 수 있습니다 :
update @myTable set myTextColumn = replace( replace( replace( LTrim(RTrim(myTextColumn)), ' ',' |'), '| ',''), '|','')
절은 업데이트 할 필요가 아니면 이중 공백이있는 경우에만 행에 업데이트를 제한하는 적절한를 사용합니다.
예:
where 1<=Patindex('% %', myTextColumn)
나는이 방법에 외부 쓰기를 발견 : 하나와 여러 공간 교체
-
==============================
2.이 작품 :
이 작품 :
UPDATE myTable SET myTextColumn = REPLACE( REPLACE( REPLACE(myTextColumn ,' ',' '+CHAR(1)) -- CHAR(1) is unlikely to appear ,CHAR(1)+' ','') ,CHAR(1),'') WHERE myTextColumn LIKE '% %'
전체 세트 기초 루프 없음.
우리는 특이한 성격과 공백으로 두 공간을 대체 그래서. 우리가 이상한 문자 X를 호출 할 경우, 5 개 공간이 될 'X X'와 6 개 공간 'X X X'가된다. 그런 다음 우리는 빈 문자열로 'X'를 대체합니다. 그래서 5 개 공간 '이 될'6 개 공간이 될 'X'. 그런 경우 공간의 짝수가 있었다, 우리는 하나의 공간을두고, 나머지 'X의를 제거합니다.
-
==============================
3.
select string = replace( replace( replace(' select single spaces',' ','<>') ,'><','') ,'<>',' ')
T-SQL에서 하나의 공간 중복 공간을 교체
-
==============================
4.
SELECT 'starting...' --sets @@rowcount WHILE @@rowcount <> 0 update myTable set myTextColumn = replace(myTextColumn, ' ', ' ') where myTextColumn like '% %'
-
==============================
5.아니 매우 SET 기반하지만 간단한 WHILE 트릭을 할 것입니다.
아니 매우 SET 기반하지만 간단한 WHILE 트릭을 할 것입니다.
CREATE TABLE #myTable (myTextColumn VARCHAR(32)) INSERT INTO #myTable VALUES ('NoSpace') INSERT INTO #myTable VALUES ('One Space') INSERT INTO #myTable VALUES ('Two Spaces') INSERT INTO #myTable VALUES ('Multiple Spaces .') WHILE EXISTS (SELECT * FROM #myTable WHERE myTextColumn LIKE '% %') UPDATE #myTable SET myTextColumn = REPLACE(myTextColumn, ' ', ' ') WHERE myTextColumn LIKE '% %' SELECT * FROM #myTable DROP TABLE #myTable
-
==============================
6.하나 문자 하나를 통해 단계 및 이전 문자의 기록을 유지한다. 현재 문자가 공간이며, 마지막 문자가 공백 인 경우, 물건.
하나 문자 하나를 통해 단계 및 이전 문자의 기록을 유지한다. 현재 문자가 공간이며, 마지막 문자가 공백 인 경우, 물건.
CREATE FUNCTION [dbo].[fnRemoveExtraSpaces] (@Number AS varchar(1000)) Returns Varchar(1000) As Begin Declare @n int -- Length of counter Declare @old char(1) Set @n = 1 --Begin Loop of field value While @n <=Len (@Number) BEGIN If Substring(@Number, @n, 1) = ' ' AND @old = ' ' BEGIN Select @Number = Stuff( @Number , @n , 1 , '' ) END Else BEGIN SET @old = Substring(@Number, @n, 1) Set @n = @n + 1 END END Return @number END GO select [dbo].[fnRemoveExtraSpaces]('xxx xxx xxx xxx')
-
==============================
7.
create table blank( field_blank char(100)) insert into blank values('yyy yyyy') insert into blank values('xxxx xxxx') insert into blank values ('xxx xxx') insert into blank values ('zzzzzz zzzzz') update blank set field_blank = substring(field_blank,1,charindex(' ',field_blank)-1) + ' ' + ltrim(substring(field_blank,charindex(' ',field_blank) + 1,len(field_blank))) where CHARINDEX (' ' , rtrim(field_blank)) > 1 select * from blank
-
==============================
8.나를 위해 위의 예는 거의 트릭을했지만 좀 더 안정적이고 테이블 또는 열 또는 반복 일련 번호의 독립적 인 무언가를 필요로했다. 그래서 위의 쿼리의 대부분에서 내 수정입니다.
나를 위해 위의 예는 거의 트릭을했지만 좀 더 안정적이고 테이블 또는 열 또는 반복 일련 번호의 독립적 인 무언가를 필요로했다. 그래서 위의 쿼리의 대부분에서 내 수정입니다.
CREATE FUNCTION udfReplaceAll ( @OriginalText NVARCHAR(MAX), @OldText NVARCHAR(MAX), @NewText NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN WHILE (@OriginalText LIKE '%' + @OldText + '%') BEGIN SET @OriginalText = REPLACE(@OriginalText,@OldText,@NewText) END RETURN @OriginalText END GO
-
==============================
9.이 같은 데이터를 말할 수 있습니다
이 같은 데이터를 말할 수 있습니다
Table name : userdata Field: id, comment, status, id, "I love -- -- - -spaces -- - my INDIA" , "Active" <br> id, "I love -- -- - -spaces -- - my INDIA" , "Active" <br> id, "I love -- -- - -spaces -- - my INDIA" , "Active" <br> id, "I love -- -- - -spaces -- - my INDIA" , "Active" <br>
그래서 그냥이 좋아해요
update userdata set comment=REPLACE(REPLACE(comment," ","-SPACEHERE-"),"-SPACEHERE"," ");
내가 테스트하지 않은,하지만 난이 일 것이라 생각합니다.
-
==============================
10.여기에 간단한 솔루션입니다 :)
여기에 간단한 솔루션입니다 :)
update myTable set myTextColumn = replace(replace(replace(LTrim(RTrim(myTextColumn )),' ','<>'),'><',''),'<>',' ')
-
==============================
11.이 시도:
이 시도:
UPDATE Ships SET name = REPLACE(REPLACE(REPLACE(name, ' ', ' ' + CHAR(1)), CHAR(1) + ' ', ''), CHAR(1), '') WHERE name LIKE '% %'
-
==============================
12.
REPLACE(REPLACE(REPLACE(myTextColumn,' ',' %'),'% ',''),'%','')
문 위의 하나의 공간에 여러 공간을 교체하기위한 굉장히했다. 선택적으로 초기에 제거 공간으로 LTRIM 및 RTRIM을 추가합니다.
여기에서있어 : http://burnignorance.com/database-tips-and-tricks/remove-multiple-spaces-from-a-string-using-sql-server/
-
==============================
13.
WHILE (SELECT count(myIDcolumn) from myTable where myTextColumn like '% %') > 0 BEGIN UPDATE myTable SET myTextColumn = REPLACE(myTextColumn ,' ',' ') END
-
==============================
14.시도 해봐:
시도 해봐:
CREATE OR REPLACE FUNCTION REM_SPACES (TEXTO VARCHAR(2000)) RETURNS VARCHAR(2000) LANGUAGE SQL READS SQL DATA BEGIN SET TEXTO = UPPER(LTRIM(RTRIM(TEXTO))); WHILE LOCATE(' ',TEXTO,1) >= 1 DO SET TEXTO = REPLACE(TEXTO,' ',' '); END WHILE; RETURN TEXTO; END
-
==============================
15.
Update myTable set myTextColumn = replace(myTextColumn, ' ', ' ');
위의 쿼리는 하나의 빈 공간이 모두 이중 빈 공간을 제거합니다
그러나이 한 번만 작동합니다.
from https://stackoverflow.com/questions/2182877/sql-method-to-replace-repeating-blanks-with-single-blanks by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL 수평 데이터로 수직 데이터를 변환하는? (0) | 2020.05.26 |
---|---|
[SQL] 어떻게 SQLite는 지난 삽입 ID를 얻으려면? (0) | 2020.05.26 |
[SQL] 어떻게 CASCADE DELETE를 가능하게하기 위해 테이블을 수정합니까? (0) | 2020.05.26 |
[SQL] SQL은 - 행을 삽입 및 기본 키를 반환 (0) | 2020.05.26 |
[SQL] ExecuteNonQuery는에 영향을받는 행을 얻기 (0) | 2020.05.26 |