본문 바로가기

프로그래밍&IT/SQL Server (MS-SQL)

[MS SQL] 문자열 함수 (2008 R2 버전으로)

 

 

MS SQL 학습

문자열 함수
 + 함수라기보단 연산자? 둘이상의 문자(열)을 연결
Ex) select 'A' + 'BCD' -> ABCD
 ASCII ( character_expression ) 문자에 대한 ASCII (INT) 값.
Ex) select ASCII('A') -> 65
 CHAR ( integer_expression ) int ASCII 코드를 문자로 변환
Ex) select CHAR(65) -> A
CHARINDEX
( expression1 ,expression2
 [ , start_location ] )
 
xpression2에서 expression1을 검색하고
시작 위치(찾은 경우)를 반환합니다. 검색은 start_location에서 시작 

Ex) select CHARINDEX('ABC', 'ABCDEFG',0) -> 1
      select CHARINDEX('C', 'ABCDEFG',0) -> 3
DIFFERENCE
( character_expression ,
  character_expression ) 
두 문자열 비교해 비슷한 정도를 0~4 사이의 int 값을 리턴.
0은 유사점이 적거나 없음을 나타내며 4는 유사점이 많거나 동일한 값.
Ex) SELECT DIFFERENCE('Green','Greene') -> 4
      SELECT DIFFERENCE('gnxaaerer','Greene') -> 3


아래에 나오겠지만, 문자열/식에 대한 SOUNDEX값의 차이를 비교한다고
SELECT SOUNDEX('Green'), SOUNDEX('Greene'), DIFFERENCE('Green','Greene')
-> G160 G1604
LEFT
( character_expression ,
  integer_expression ) 
문자열의 왼쪽부터 지정된 수만큼의 문자를 반환 
Ex) SELECT LEFT('abcdefg',2) -> ab
LEN ( string_expression )   지정한 문자열 식의 후행 공백을 제외한 문자 수를 반환
Ex) select LEN('abcdefg') -> 7


참고) 식을 표시하는 데 사용된 바이트 수를 반환하려면 DATALENGTH 함수를 사용
LOWER
( character_expression ) 
 대문자 데이터를 소문자 데이터로 변환한 후에 문자 식을 반환.
Ex) select LOWER('GreeN') -> green
LTRIM
( character_expression ) 
선행 공백을 제거한 varchar 또는 nvarchar 문자 식을 반환
Ex) 

SELECT LTRIM('     Five spaces are at the beginning of this string.  ')-> 'Five spaces are at the beginning of this string.  '
NCHAR ( integer_expression )  유니코드 표준에서 정의된 대로 지정된 정수 코드에 해당하는
 
nchar(1) 유니코드 문자를 반환.

integer_expression : 0 – 65535 범위의 양의 정수입니다. 이 범위 밖의 값을 지정하면 Null 값이 반환됨.

Ex) select nchar(248) -> ø
 PATINDEX
( '%pattern%' , expression )
 유효한 모든 text 및 character 데이터 형식으로 지정한 식에서 패턴이 처음 나타나는 시작 위치를 반환하거나 패턴을 찾지 못하면 0을 반환.
pattern - 찾을 시퀀스가 포함된 문자 식 입니다. 와일드카드 문자를 사용할 수 있으나, % 문자가 앞에 오고 그다음에 pattern이 와야.



단, 첫문자또는 마지막문자를 검색하는 경우 예외Ex) select PATINDEX('%ABC%', 'DDEFABCEFF') -> 5
 QUOTENAME
( 'character_string'
   [ , 'quote_character' ] ) 
 입력 문자열이 유효한 SQL Server 구분 식별자가 되도록 구분 기호가 추가된 유니코드 문자열을 반환함
Ex) abc[]def 문자열에 [ 및 ] 문자를 추가하여 유효한 SQL Server 구분 식별자
SELECT QUOTENAME('abc[]def') -> [abc[]]def]
REPLACE ( string_expression , string_pattern , string_replacement )  지정된 문자열 값의 모든 항목을 다른 문자열 값으로 바꾼다
Ex) 
SELECT REPLACE('abcdefghicde','cde','xxx') -> abxxxfghixxx
REPLICATE ( string_expression ,integer_expression )   지정한 횟수만큼 문자열 값을 반복
Ex) 
SELECT REPLICATE('0', 4) + REPLICATE('y',4) + REPLICATE('m',2) -> 0000yyyymm
REVERSE ( string_expression )  문자열 값을 반대로 반환
Ex) SELECT REVERSE('ABCDEFG') -> GFEDCBA
REVERT [ WITH COOKIE = @varbinary_variable ]  실행 컨텍스트를 마지막 EXECUTE AS 문의 호출자로 다시 전환.

WITH COOKIE = @varbinary_variable / 해당되는 EXECUTE AS 독립 실행형 문에 생성된 쿠키를 지정함. @varbinary_variable 은 varbinary(100)

EXECUTE AS : 세션의 실행 컨텍스트를 설정
 RIGHT ( character_expression , integer_expression ) 지정된 문자 수만큼 문자열의 오른쪽 부분을 반환
Ex) SELECT right('abcdefg',2) -> fg
 RTRIM ( character_expression ) 후행 공백을 모두 잘라낸 문자열을 반환
Ex) SELECT RTRIM('  Removes trailing spaces.   ') ->'  Removes trailing spaces.'
SOUNDEX ( character_expression )  두 문자열의 유사성을 평가하기 위한 4자의 SOUNDEX 코드를 반환
위 
DIFFERENCE 와 같이 참조하면 될듯.

Ex) SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') -> S252 S200
 SPACE ( integer_expression ) 반복된 공백 문자열을 반환
Ex) 

SELECT  'A:' + SPACE(4) + ';' -> 'A:    ;'
 STR
(float_expression
  [ , length
     [ ,decimal ] ] )
숫자 데이터에서 변환된 문자 데이터를 반환
length : 총 길이. 소수점, 부호, 숫자 및 공백을 포함한 길이. 기본값 10
decimal : 

소수 자릿수(소수점 오른쪽의 자릿수)    decimal은 16보다 작거나 같아야하며.    decimal이 16보다 크면 소수점 오른쪽의 16자리까지로 결과가 잘림Ex) SELECT STR(123.45, 6, 1) ->  123.5
 STUFF
( character_expression , start ,
  length ,character_expression )
다른 문자열에 문자열을 삽입한다.
이 함수는 지정된 시작 위치와 문자 수에 따라 첫 번째 문자열의 문자를 삭제하고
   두 번째 문자열을 시작 위치에 삽입.
character_expression : 문자 데이터의 식
start : 삭제 및 삽입 시작 위치를 지정하는 정수 값.
   start 또는 length가 음수이면 Null 문자열이 반환
   start가 첫 번째 character_expression보다 길면 Null 문자열이 반환
length : 삭제할 문자 수를 지정하는 정수. 
   length가 첫 번째 character_expression보다 길면 마지막 character_expression의 마지막 문자까지 삭제Ex) SELECT STUFF('abcdef', 2, 3, 'ijklmn') -> aijklmnef
 SUBSTRING (
   value_expression ,
   start_expression ,
   length_expression )
문자, 이진, 텍스트 또는 이미지 식의 일부를 반환
start_expression : 반환된 문자가 시작되는 위치를 지정하는 정수 또는 bigint 식
length_expression : 반환될 value_expression의 문자 수를 지정하는 양의 정수 또는 bigint 식

Ex) 
select SUBSTRING('ABCDEFG', 1, 3) -> ABC
 UNICODE ( 'ncharacter_expression' ) 유니코드 표준에서 정의한 대로 입력 식에 있는 첫 글자의 정수 값을 반환
Ex) SELECT UNICODE('gap') -> 103
 UPPER ( character_expression ) 소문자 데이터를 대문자로 변환한 문자 식을 반환
Ex) 

SELECT UPPER('aBCdefG') -> ABCDEFG