오늘은 SSMS 팁 세번째 시간으로 정규식을 사용해서 텍스트를 찾거나 바꾸는 방법에 대해 알아보겠습니다.

이 팁들은 일부 SQL Server 2008 (2008 R2) 에도 해당됩니다.

 

TIP #3. 정규식을 사용하여 텍스트를 검색하거나 바꾸기 - 와일드 카드 예제 포함

SSMS에서 찾기 및 바꾸기 기능을 잘 활용하면, 별도의 에디터를 열지 않고서도 문자열을 처리할 수 있습니다.

다음 예제 세 가지를 통해 알아보겠습니다.

 

1. 줄바꿈을 없애고 ,로 바꾸기

이 기능은 칼럼명을 가져다가 쿼리를 만들 때 유용하게 사용할 수 있습니다.

(물론 SSMS의 다른 기능을 사용해서 만들 수도 있습니다.)

 

1-1. sp_help 또는 ALT+F1을 통해 테이블 정보를 보면 다음과 같이 표시됩니다.

1-1.png

 

1-2. 칼럼리스트만 따로 뽑아와 봤습니다.

1-2.png

 

1-3. 메뉴에서 [편집] > [찾기 및 바꾸기] > [빠른 바꾸기]를 선택하거나 CTRL+H 를 누릅니다.

찾을 내용엔 "\n"을, 바꿀 내용엔 ","를 넣습니다.

이 때 "찾기 옵션"을 확장하고 "정규식"을 "사용"합니다.

1-3.png

 

1-4. "모두 바꾸기"를 실행하면 다음과 같이 줄바꿈 문제가 ,로 변경된 것을 확인할 수 있습니다.

1-4.png

# \n : 줄바꿈, \t : 탭 입니다.

 

 

2. 여러 개의 문자열을 하나의 문자열로 변경하기

이 기능은 여러 문자열을 하나의 문자열로 바꿀 때 사용합니다.

 

2-1. 다음과 같은 텍스트가 있습니다. location 과 address라는 두 단어를 addr로 일괄변경한다면.

2-1.png

 

2-2. 바꾸기를 통해 다음과 같이 지정합니다.

찾을 내용에 "location|address" 와 같이 | 로 묶습니다.

바꿀 내용에 "addr"을 넣습니다.

정규식을 사용하도록 지정합니다.

2-2.png

 

2-3. "모두 바꾸기"를 실행하면 다음과 같이 "location"과 "address" 모두 "addr"로 변경됩니다.

2-3.png

 

3. 와일드 카드를 이용해 변경하기

 

이 기능은 와일드 카드 기능을 이용해서 패턴 내 단어를 변경할 때 사용합니다.

 

3-1. 다음과 같은 텍스트가 있습니다. 숫자가 불필요하다고 판단되어 숫자를 모두 없애보겠습니다.

3-1.png

 

3-2. 바꾸기를 통해 다음과 같이 지정합니다.

찾을 내용 에 "[0-9]"로 넣고.

바꿀 내용엔 아무것도 넣지 않습니다.

정규식을 사용하도록 지정합니다.

3-2.png

 

3-3. "모두 바꾸기"를 실행하면 다음과 같이 숫자 부분이 모두 변경됩니다.

3-3.png

 

관련 MSDN

http://msdn.microsoft.com/ko-kr/library/ms174214.aspx


http://www.sqler.com/331231

안녕하세요? 쓸만한게 없네 입니다.

 

어차피 웹에서는 자바스크립트를 통해 ASP / ASP.NET에서 유효성 체크를 하겠지만,

SQL에서 체크하는 로직은 별로 없었던 것 같네요.

 

CREATE FUNCTION [dbo].UFN_ValidEmailCheck

(

       @EMail VARCHAR(255)

)

RETURNS BIT

AS

BEGIN

       DECLARE @IsValid BIT

       SET @IsValid = 0    

       IF @EMail IS NOT NULL

       BEGIN

             SET @EMail = LOWER(@EMail)

            

             IF @EMail like '[a-z,0-9,_,-]%@[a-z,0-9,_,-]%.[a-z][a-z]%'

                    AND @EMail NOT like '%@%@%'

                    AND CHARINDEX('.@',@EMail) = 0

                    AND CHARINDEX('..',@EMail) = 0

                    AND CHARINDEX(',',@EMail) = 0

                    AND RIGHT(@EMail,1) between 'a' AND 'z'

             BEGIN

                    SET @IsValid = 1

             END

       END

       RETURN @IsValid

END

 

SELECT dbo.UFN_ValidEmailCheck('windtrap@paran.com') AS ValidEmail

SELECT dbo.UFN_ValidEmailCheck('박규리@naver.com') AS ValidEmail

* Result *

 

ValidEmail

----------

1

 

(1개 행이 영향을 받음)

 

ValidEmail

----------

0

 

(1개 행이 영향을 받음)

 

요렇게 나옵니다.

+ Recent posts