2017-10-12 13 views
0

영숫자 값이있는 VARCHAR 열이있는 경우. 편지 만 지우고 다른 모든 문자는 제발 어떻게 남겨 둡니까? 이것은 모든 특수 문자와 숫자를 그 자리에두고 싶지만 알파벳 만 제거하기 때문에 중복이 아닙니다 (최소한 나는 생각하지 않습니다).SQL Server- 문자열의 모든 문자 제거

Input  Desired Result 
    123   123 
    123S  123 
    A123,123 123,123 
    a123..A123 123..123 

당신이 String 단순히 문자열에 loop을 할 귀하의 모든 Alphabets을 제거하려면 나는 다음하지만 원하는 출력을 얻을하지 않습니다 ..

DECLARE @textval NVARCHAR(30) 
SET @textval = 'S123..S123' 

SELECT LEFT(SUBSTRING(@textval, PATINDEX('%[0-9.-]%', @textval), 8000), 
      PATINDEX('%[^0-9.-]%', SUBSTRING(@textval, PATINDEX('%[0-9.-]%', @textval), 8000) + 'X') -1) 

SELECT  STUFF(@textval, 1, PATINDEX('%[0-9]%', @textval)-1, '') 
+0

내 질문은 모든 특수 문자와 숫자를 그대로두고 영문자 만 제거한다는 것이 중복되지 않는다고 생각합니다. – Harry

답변

1

를 사용하여 시도했다.

DECLARE @str NVARCHAR(MAX); 
DECLARE @lpcounter INT; 
SET @str = 'A123..Z123'; 
SET @lpcounter = 0; 
WHILE @lpcounter <= 26 
    BEGIN 
     SET @str = REPLACE(@str, CHAR([email protected]), ''); 
     SET @lpcounter = @lpcounter + 1; 
    END; 
SELECT @str; 
+0

Brilliant .. 고마워 ..이게 내가 필요한거야. – Harry