SQL 이스케이프 시퀀스 사용

Microsoft SQL Server JDBC 드라이버는 JDBC API에 정의된 SQL 이스케이프 시퀀스 사용을 지원합니다. 이스케이프 시퀀스는 SQL 문 내에서 SQL 문자열의 이스케이프 부분이 다르게 처리되었음을 드라이버에 알리는 데 사용됩니다. SQL 문자열의 이스케이프 부분은 JDBC 드라이버에서 처리될 때 SQL Server에서 이해할 수 있는 SQL 코드로 변환됩니다.

JDBC API에 필요한 이스케이프 시퀀스에는 다음 5가지 종류가 있으며 이들 모두 JDBC 드라이버에서 지원됩니다.

  • LIKE 와일드카드 리터럴

  • 함수 처리

  • 날짜 및 시간 리터럴

  • 저장 프로시저 호출

  • 외부 조인

JDBC 드라이버에서 사용하는 이스케이프 시퀀스 구문은 다음과 같습니다.

{keyword ...parameters...}

참고

JDBC 드라이버의 경우 SQL 이스케이프 처리가 항상 설정되어 있습니다.

다음 섹션에서는 이스케이프 시퀀스의 5가지 종류와 JDBC 드라이버에서 이러한 이스케이프 시퀀스를 지원하는 방식에 대해 설명합니다.

LIKE 와일드카드 리터럴

JDBC 드라이버는 LIKE 절 와일드카드를 리터럴로 사용할 수 있도록 {escape 'escape character'} 구문을 지원합니다. 예를 들어 다음 코드는 col3의 값을 반환하는데 여기서 col2의 값은 문자 그대로 밑줄(와일드카드를 사용하지 않음)로 시작됩니다.

ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2 
LIKE '\\_%' {escape '\\'}");

참고

이스케이프 시퀀스는 SQL 문의 끝에 있어야 합니다. 명령 문자열에 SQL 문이 여러 개 있을 경우 이스케이프 시퀀스는 각 관련 SQL 문의 끝에 있어야 합니다.

함수 처리

JDBC 드라이버는 다음 구문을 사용하여 SQL 문에서 함수 이스케이프 시퀀스를 지원합니다.

{fn functionName}

여기서 functionName은 JDBC 드라이버에서 지원하는 함수입니다. 예를 들면 다음과 같습니다.

SELECT {fn UCASE(Name)} FROM Employee

다음 표는 함수 이스케이프 시퀀스를 사용할 때 JDBC 드라이버에서 지원하는 다양한 함수를 보여 줍니다.

문자열 함수 숫자 함수 Datetime 함수 시스템 함수

ASCII

CHAR

CONCAT

DIFFERENCE

INSERT

LCASE

LEFT

LENGTH

LOCATE

LTRIM

REPEAT

REPLACE

RIGHT

RTRIM

SOUNDEX

SPACE

SUBSTRING

UCASE

ABS

ACOS

ASIN

ATAN

ATAN2

CEILING

COS

COT

DEGREES

EXP

FLOOR

LOG

LOG10

MOD

PI

POWER

RADIANS

RAND

ROUND

SIGN

SIN

SQRT

TAN

TRUNCATE

CURDATE

CURTIME

DAYNAME

DAYOFMONTH

DAYOFWEEK

DAYOFYEAR

EXTRACT

HOUR

MINUTE

MONTH

MONTHNAME

NOW

QUARTER

SECOND

TIMESTAMPADD

TIMESTAMPDIFF

WEEK

YEAR

DATABASE

IFNULL

USER

참고

데이터베이스에서 지원하지 않는 함수를 사용하려고 하면 오류가 발생합니다.

날짜 및 시간 리터럴

날짜, 시간 및 타임스탬프 리터럴에 대한 이스케이프 구문은 다음과 같습니다.

{literal-type 'value'}

여기서 literal-type은 다음 값 중 하나입니다.

리터럴 형식 설명 값 형식

d

날짜

yyyy-mm-dd

t

시간

hh:mm:ss [1]

ts

타임스탬프

yyyy-mm-dd hh:mm:ss[.f...]

예를 들면 다음과 같습니다.

UPDATE Orders SET OpenDate={d '2005-01-31'} 
WHERE OrderID=1025

저장 프로시저 호출

JDBC 드라이버는 반환 매개 변수를 처리해야 하는지 여부에 따라 저장 프로시저 호출에 대해 {? = call proc_name(?,...)}{call proc_name(?,...)} 이스케이프 구문을 지원합니다.

프로시저는 데이터베이스에 저장된 실행 가능한 개체로서 일반적으로 미리 컴파일된 하나 이상의 SQL 문입니다. 저장 프로시저 호출을 위한 이스케이프 시퀀스 구문은 다음과 같습니다.

{[?=]call procedure-name[([parameter][,[parameter]]...)]}

여기서 procedure-name은 저장 프로시저의 이름을 지정하고 parameter는 저장 프로시저 매개 변수를 지정합니다.

저장 프로시저에서 call 이스케이프 시퀀스를 사용하는 방법은 저장 프로시저가 있는 문 사용을 참조하십시오.

외부 조인

JDBC 드라이버는 SQL92 LEFT, RIGHT 및 FULL OUTER JOIN 구문을 지원합니다. 외부 조인에 대한 이스케이프 시퀀스는 다음과 같습니다.

{oj outer-join}

여기서 outer-join은 다음과 같습니다.

table-reference {LEFT | RIGHT | FULL} OUTER JOIN  
{table-reference | outer-join} ON search-condition

여기서 table-reference는 테이블 이름이고 search-condition은 테이블에 사용할 조인 조건입니다.

예를 들면 다음과 같습니다.

SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status 
   FROM {oj Customers LEFT OUTER JOIN 
      Orders ON Customers.CustID=Orders.CustID} 
   WHERE Orders.Status='OPEN'

JDBC 드라이버에서 지원하는 외부 조인 이스케이프 시퀀스는 다음과 같습니다.

  • 왼쪽 우선 외부 조인

  • 오른쪽 우선 외부 조인

  • 완전 외부 조인

  • 중첩된 외부 조인

참고

관련 자료

JDBC 드라이버에서 문 사용