문자열의 끝에 유효하지 않은 문자가 있거나 없을 수있는 이름을 가진 테이블이 있습니다. 어떻게 제거 할 수 있습니까? 유효한 문자는 '[A-ZA-Z0-9.)]문자열에서 마지막 'n'개의 유효하지 않은 문자를 제거하십시오.
Create table dbo.temp(name varchar(200) null)
insert into dbo.temp values('Test name1')
insert into dbo.temp values('Test name2#')
insert into dbo.temp values('Test name3 %#%^&^&&&')
insert into dbo.temp values('------Test Name -----------')
내가이
SELECT CASE WHEN RIGHT(RTRIM(Name),1) NOT LIKE '[a-zA-Z0-9.)]' THEN SUBSTRING(Name,1,LEN(Name)-1)
ELSE LTRIM(RTRIM(Name)) END as Tname FROM dbo.temp
시도이다 그러나 이것은 마지막 문자를 삭제합니다.
그리고 마지막 행은 반환해야합니다 : ------Test Name
어떤 제안.
감사 MR
조금 뒤져 보니 사용자 정의 함수가 필요하다고 말할 수 있습니다. –
공간도 함께 넣어야합니까? 또한 유효하지 않은 문자의 모든 인스턴스를 제거 하시겠습니까? 아니면 "끝"에서만 제거 하시겠습니까? 결국, 어떻게 끝을 정의합니까? 아니면 현재 데이터가 유효하지 않은 데이터의 유일한 위치이기 때문에 끝이라고 말하고 있습니까? ( –
) 쓰레기 데이터가있는 곳이기 때문에 끝 부분 만보고 있습니다. 공간에 대해 잊어 버렸습니다. – user2726975