[SQL] 어떻게 SQL Server의 문자열에서 공백 문자를 제거
SQL어떻게 SQL Server의 문자열에서 공백 문자를 제거
나는 작동하지 않는 SQL하지만 LTRIM 및 RTRIM 함수의 문자열에서 공백을 제거하기 위해 노력하고있어?
기둥:
[ProductAlternateKey] [nvarchar](25) COLLATE Latin1_General_CS_AS NULL
질문:
select REPLACE(ProductAlternateKey, ' ', '@'),
LEN(ProductAlternateKey),
LTRIM(RTRIM(ProductAlternateKey)) AS LRTrim,
LEN(LTRIM(RTRIM(ProductAlternateKey))) AS LRLen,
ASCII(RIGHT(ProductAlternateKey, 1)) AS ASCIIR,
ASCII(LEFT(ProductAlternateKey, 1)) AS ASCIIL,
ProductAlternateKey
from DimProducts
where ProductAlternateKey like '46783815%'
결과:
| COLUMN_0 | COLUMN_1 | LRTrim | LRLen | ASCIIR | ASCIIL | PRODUCTALTERNATEKEY |
---------------------------------------------------------------------------------
| 46783815 | 8 | 46783815| 8| 53 | 52 | 46783815 |
| 46783815 | 10|46783815 | 10| 10 | 52 | 46783815 |
LTRIM 및 RTRIM은 "입력"처럼 작동하지 않는 경우는 다른 상징이 될 수 있습니까?
해결법
-
==============================
1.당신이 2 행의 오른쪽 대부분의 문자가 줄 바꿈 또는 ASCII 문자 10 것을 볼 수 있습니다 ASCII (RIGHT (ProductAlternateKey, 1)) 사용.
당신이 2 행의 오른쪽 대부분의 문자가 줄 바꿈 또는 ASCII 문자 10 것을 볼 수 있습니다 ASCII (RIGHT (ProductAlternateKey, 1)) 사용.
이것은 표준에서는 LTrim RTRIM 함수를 사용하여 제거 할 수 없습니다.
당신은 그러나) ''() (10 ProductAlternateKey, CHAR 교체 (사용할 수 있습니다
또한 캐리지 리턴 및 탭을 설명 할 수 있습니다. 이 세 가지 (라인 피드, 캐리지 리턴 및 탭) 일반적인 범죄자이며, 다음으로 제거 할 수 있습니다 :
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(ProductAlternateKey, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')))
당신이 함께 제거 할 수 없습니다 더 이상 "공백"문자가 발생하면 위의 다음 하나 아래의 모든 시도 :
--NULL Replace([YourString],CHAR(0),''); --Horizontal Tab Replace([YourString],CHAR(9),''); --Line Feed Replace([YourString],CHAR(10),''); --Vertical Tab Replace([YourString],CHAR(11),''); --Form Feed Replace([YourString],CHAR(12),''); --Carriage Return Replace([YourString],CHAR(13),''); --Column Break Replace([YourString],CHAR(14),''); --Non-breaking space Replace([YourString],CHAR(160),'');
잠재적 인 공백 문자의이 목록은 같은 함수를 작성하는 데 사용할 수 있습니다 :
Create Function [dbo].[CleanAndTrimString] (@MyString as varchar(Max)) Returns varchar(Max) As Begin --NULL Set @MyString = Replace(@MyString,CHAR(0),''); --Horizontal Tab Set @MyString = Replace(@MyString,CHAR(9),''); --Line Feed Set @MyString = Replace(@MyString,CHAR(10),''); --Vertical Tab Set @MyString = Replace(@MyString,CHAR(11),''); --Form Feed Set @MyString = Replace(@MyString,CHAR(12),''); --Carriage Return Set @MyString = Replace(@MyString,CHAR(13),''); --Column Break Set @MyString = Replace(@MyString,CHAR(14),''); --Non-breaking space Set @MyString = Replace(@MyString,CHAR(160),''); Set @MyString = LTRIM(RTRIM(@MyString)); Return @MyString End Go
다음과 같이 다음 사용할 수있는 :
Select dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey from DimProducts
-
==============================
2.이 경우, 접두사 / 접미사에 공간이 없습니다. 제 1 회 행은 확인을 보인다. 2 행의 내용에 대해 다음을 수행하십시오.
이 경우, 접두사 / 접미사에 공간이 없습니다. 제 1 회 행은 확인을 보인다. 2 행의 내용에 대해 다음을 수행하십시오.
ASCII(RIGHT(ProductAlternateKey, 1))
과
ASCII(LEFT(ProductAlternateKey, 1))
-
==============================
3.텍스트, 제발 확인 후 2 공백이있을 수 있습니다. 또한 바로 LTRIM 및 RTRIM 기능을 사용할 수 있습니까?
텍스트, 제발 확인 후 2 공백이있을 수 있습니다. 또한 바로 LTRIM 및 RTRIM 기능을 사용할 수 있습니까?
LTRIM(RTRIM(ProductAlternateKey))
아마 여분의 공간은 일반적인 공간 (ASCII 32, 부드러운 공간) 아닌가요? 어쩌면 그들은, ASCII 160 "하드 공간"인가?
ltrim(rtrim(replace(ProductAlternateKey, char(160), char(32))))
-
==============================
4.이건 어때요?
이건 어때요?
CASE WHEN ProductAlternateKey is NOT NULL THEN CONVERT(NVARCHAR(25), LTRIM(RTRIM(ProductAlternateKey))) FROM DimProducts where ProductAlternateKey like '46783815%'
-
==============================
5.눈에 보이지 않는 문자처럼 보이는 -
눈에 보이지 않는 문자처럼 보이는 -
ALT+255
이 시도
select REPLACE(ProductAlternateKey, ' ', '@') --type ALT+255 instead of space for the second expression in REPLACE from DimProducts where ProductAlternateKey like '46783815%'
주권
편집 : () 결과를 ASCII를 바탕으로, 시도의 ALT + 10 - 사용 숫자 키패드
-
==============================
6.SQL 컬럼 데이터를 새로운 라인 문자를 제거
SQL 컬럼 데이터를 새로운 라인 문자를 제거
Update a set a.CityName=Rtrim(Ltrim(REPLACE(REPLACE(a.CityName,CHAR(10),' '),CHAR(13),' '))) ,a.postalZone=Rtrim(Ltrim(REPLACE(REPLACE(a.postalZone,CHAR(10),' '),CHAR(13),' '))) From tAddress a inner Join tEmployees p on a.AddressId =p.addressId Where p.MigratedID is not null and p.AddressId is not null AND (REPLACE(REPLACE(a.postalZone,CHAR(10),'Y'),CHAR(13),'X') Like 'Y%' OR REPLACE(REPLACE(a.CityName,CHAR(10),'Y'),CHAR(13),'X') Like 'Y%')
from https://stackoverflow.com/questions/14211346/how-to-remove-white-space-characters-from-a-string-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 일련의 숫자에서 누락 된 번호를 확인하려면? (0) | 2020.06.24 |
---|---|
[SQL] 다른 MySQL의 데이터베이스에 하나의 MySQL 데이터베이스에서 테이블을 복사하는 방법 (0) | 2020.06.24 |
[SQL] SQL 뷰에합니까 JPA 지원 매핑? (0) | 2020.06.24 |
[SQL] 어떻게 패키지 데이터베이스 / SQL과 I 배치 SQL 문 (0) | 2020.06.24 |
[SQL] DB2 쿼리는 주어진 스키마에 대한 모든 테이블 이름을 검색하기 (0) | 2020.06.24 |