From cb9e6cf1da3b933bb1a7930b5b718e9fb36626a0 Mon Sep 17 00:00:00 2001 From: Soyoon-Choi Date: Wed, 10 Jan 2024 17:28:22 +0900 Subject: [PATCH 1/3] Update SQL reference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 번역할 매뉴얼 국문 --- Manuals/Altibase_7.3/eng/SQL Reference.md | 756 +++++++++++++++++- .../Altibase_7.3/eng/media/SQL/join_table.gif | Bin 0 -> 4407 bytes .../eng/media/SQL/multiple_update.gif | Bin 0 -> 5070 bytes .../Altibase_7.3/eng/media/SQL/one_table.gif | Bin 0 -> 6425 bytes .../eng/media/SQL/restart_sequence_clause.gif | Bin 0 -> 3473 bytes .../eng/media/SQL/restart_sequence_clause.vsd | Bin 0 -> 34304 bytes .../Altibase_7.3/eng/media/SQL/tbl_ref.gif | Bin 0 -> 3021 bytes 7 files changed, 753 insertions(+), 3 deletions(-) create mode 100644 Manuals/Altibase_7.3/eng/media/SQL/join_table.gif create mode 100644 Manuals/Altibase_7.3/eng/media/SQL/multiple_update.gif create mode 100644 Manuals/Altibase_7.3/eng/media/SQL/one_table.gif create mode 100644 Manuals/Altibase_7.3/eng/media/SQL/restart_sequence_clause.gif create mode 100644 Manuals/Altibase_7.3/eng/media/SQL/restart_sequence_clause.vsd create mode 100644 Manuals/Altibase_7.3/eng/media/SQL/tbl_ref.gif diff --git a/Manuals/Altibase_7.3/eng/SQL Reference.md b/Manuals/Altibase_7.3/eng/SQL Reference.md index 3147ff4ad..7754bd551 100644 --- a/Manuals/Altibase_7.3/eng/SQL Reference.md +++ b/Manuals/Altibase_7.3/eng/SQL Reference.md @@ -3051,6 +3051,10 @@ Alter success. ![sync_table_clause](media/SQL/sync_table_clause.gif) +*restart_clause ::=** + +[![sync_table_clause](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/restart_sequence_clause.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/restart_sequence_clause.gif) + #### Prerequisites Only the SYS user, the owner of the schema to which the sequence belongs, users having the ALTER object privilege on the sequence, and users having the ALTER ANY SEQUENCE system privilege can execute this statement. @@ -3107,6 +3111,17 @@ When changing the definition of an existing sequence, the START WITH clause cann For detailed more information about sequences, please refer to the description of the CREATE SEQUENCE statement. +*restart_clause* + +시퀀스를 재시작하기 위한 구문으로 아래 세가지 방법이 있다. + +- RESTART + - START VALUE를 INCREMENT VALUE가 1 이상이면 MINVALUE로, INCREMENT VALUE가 -1 이하이면 MAXVALUE로 초기화하고, 시퀀스를 재시작한다. +- RESTART WITH N + - START VALUE를 N으로 초기화하고, 시퀀스를 재시작한다. +- RESTART START WITH N + - RESTART WITH N 와 동일하게, START VALUE를 N으로 초기화하고 시퀀스를 재시작한다. + #### Examples \ Change the sequence seq1 so that the minimum value is 0, the maximum value is 100, and increments by 1. @@ -6000,6 +6015,10 @@ This clause specifies the user-defined column. It refers to CREATE TABLE stateme This is used to set the maximum number of records that can be stored in a queue table. This value can be set within the range from 1 to 4294967295 (or (232) -1). When not specified, it defaults to the maximum value of 4294967295. +*DELETE [ON|OFF]* + +큐 테이블에 DELETE 문 허용 여부를 결정하는 절이다. ON은 큐 테이블에 DELTE 문을 허용한다. OFF는 큐 테이블에 DELETE 문을 허용하지 않는다. 이 경우 DELETE 문을 허용한 경우보다 DEQUEUE 병렬 수행 성능이 향상된다. DELETE 절을 생략하면 DELETE ON으로 큐 테이블을 생성한다. DELETE 문을 허용하지 않는 큐 테이블은 V$QUEUE_DELETE_OFF에서 확인할 수 있다. + #### Considerations - When a queue is created, an object having the name queue_name + "_NEXT_MSG_ID" is created in the database. Therefore, if any existing table, view, sequence, synonym or stored procedure has the same name as the queue to be created, or has the name queue_name + "_NEXT_MSG_ID", the CREATE QUEUE statement will return an error. @@ -6037,8 +6056,14 @@ abc 1 99.999 1 row selected. ``` +<질의> 메시지의 길이가 최대 40이고, DELETE 문을 허용하지 않는 Q3이라는 이름의 큐 테이블을 생성하라. +``` +iSQL> CREATE QUEUE Q3(40) DELETE OFF; +Create success. +``` + ### CREATE REPLICATION #### Syntax @@ -10554,7 +10579,17 @@ This chapter explains each of the Data Manipulation Language (DML) statements th ![mutlipledelete_clause](media/SQL/multiple_delete.png) -tbl_ref ::= +**tbl_ref ::=** + +![tbl_ref](C:/Users/ALTIBASE/Desktop/work/tw/ALTIBASE/Documents/Manuals/Altibase_7.3/kor/media/SQL/tbl_ref.gif) + +**one_table ::=** + +![one_table](C:/Users/ALTIBASE/Desktop/work/tw/ALTIBASE/Documents/Manuals/Altibase_7.3/kor/media/SQL/one_table.gif) + +**join_table ::=** + +![join_table](C:/Users/ALTIBASE/Desktop/work/tw/ALTIBASE/Documents/Manuals/Altibase_7.3/kor/media/SQL/join_table.gif) #### Prerequisites @@ -10624,6 +10659,18 @@ Limitations of the multiple delete clause: - dictionary table cannot be used. - full outer join canno be used. +*tbl_ref* + +multiple update 를 하기 위한 table 을 명시한다. + +*one_table* + +한 개의 table이거나 혹은 view 를 명시한다. + +*join_table* + +table 사이의 join 조건을 명시한다. + #### HINTS Options Please refer to "Hint Syntax" and "Hint List" in the Chapter 2 for more detailed information. @@ -13417,6 +13464,22 @@ C1 C2 ![limit_clause_](media/SQL/limit_clause_.gif) +[**multiple_update ::=**](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/SQL Reference.md#multiple_update) + +[![multiple_update](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/multiple_update.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/multiple_update.gif) + +**tbl_ref ::=** + +[![multiple_update2](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/tbl_ref.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/tbl_ref.gif) + +**one_table ::=** + +[![multiple_update3](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/one_table.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/one_table.gif) + +**join_table ::=** + +[![multiple_update4](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/join_table.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/join_table.gif) + #### Prerequisites The SYS user, the owner of the schema containing the table, users having the UPDATE ANY TABLE system privilege, and users having the UPDATE privilege for the specified table can update values in tables using this statement. @@ -13464,6 +13527,28 @@ Another way to update a TIMESTAMP column with the system time is to use the DEFA Please refer to the returning_clause of the DELETE statement. +*multiple_update* + +join 조건을 만족하는 레코드를 찾아 명시한 컬럼들의 값을 변경하는 구문이다. + +multiple update 제약 사항: + +- limit_clause 와 returning_clause 를 사용할 수 없다. +- dictionary table 을 사용할 수 없다. +- full outer join 을 사용할 수 없다. + +*tbl_ref* + +multiple update 를 하기 위한 table 을 명시한다. + +*one_table* + +한 개의 table이거나 혹은 view 를 명시한다. + +*join_table* + +table 사이의 join 조건을 명시한다. + #### HINTS Options For detailed information about hint options, please refer to HINTS Options in the DELETE statement. @@ -23277,9 +23362,64 @@ Appendix A. Regular Expressions This section explains the regular expressions supported by Altibase. -### Regular Expression Support +이 장에서 사용한 샘플 스키마는 $ALTIBASE_HOME/sample/APRE/schema/schema.sql을 이용했다. + +### Regular Expression + +Regular expressions are a syntax convention for writing text patterns and consist of one or more character strings and metacharacters. Altibase partly supports POSIX Basic Regular Expression (BRE) and Extended Regular Expression (ERE). PCRE2 호환 모드는 PCRE2 라이브러리의 정규 표현식 문법을 지원한다. + +정규 표현식 문법이나 기능은 구현체마다 세부 구현이 다르다. DBMS 벤더마다 도입한 정규 표현식 라이브러리나 정규 표현식 라이브러리 버전이 각각 달라서 Altibase에서 지원하는 정규 표현식 문법과 기능이 타 DBMS와 차이가 있을 수 있다. + +Altibase SQL에서 정규 표현식은 아래의 문자 함수나 연산자와 함께 사용할 수 있다. + +- REGEXP_COUNT +- REGEXP_REPLACE +- REGEXP_INSTR +- REGEXP_SUBSTR +- REGEXP_LIKE 조건 연산자 + +### 정규 표현식 모드 설정 방법 + +사용자는 Altibase 정규 표현식 모드와 PCRE2 호환 모드, 두 가지 정규 표현식 모드 중 하나를 선택해서 사용해야 한다. Altibase 정규 표현식 모드가 기본으로 설정되어 있으므로 PCRE2 호환 모드를 사용하고 싶다면 다음 구문으로 정규 표현식 모드를 변경해야 한다. + +> ###### 시스템 단위 변경 + +Altibase 서버가 구동된 상태에서 시스템 프로퍼티를 변경하는 구문으로 정규 표현식 모드를 변경하는 방법이다. 변경한 설정을 적용하려면 세션을 재접속해야 한다. + +``` +ALTER SYSTEM SET REGEXP_MODE=1; +``` + + + +> ###### 세션 단위 변경 + +Altibase 서버가 구동된 상태에서 세션의 속성을 변경하는 구문으로 정규 표현식 모드를 변경하는 방법이다. + +``` +ALTER SESSION SET REGEXP_MODE=1; +``` + + + +> ###### Altibase 서버에 영구적으로 변경 + +변경한 정규 표현식 모드를 영구적으로 Altibase 서버에 적용하는 방법이다. Altibase 서버 프로퍼티 파일에 REGEXP_MODE=1을 추가하고 Altibase 서버를 재시작한다. + +``` +$ vi $ALTIBASE_HOME/conf/altibase.properties +REGEXP_MODE=1 +``` + +### Altibase 정규 표현식 모드 + +Altibase의 정규 표현식 모드 중 Altibase 정규 표현식 모드에 대해 살펴보자. + +#### 특징 + +Altibase 정규 표현식 모드는 Altibase의 기본 설정 모드이다. POSIX 기본 정규 표현식과 확장 정규 표현식의 문법을 일부 지원하며 최소한의 정규 표현식 문법을 지원한다. -Regular expressions are a syntax convention for writing text patterns and consist of one or more character strings and metacharacters. Altibase partly supports POSIX Basic Regular Expression (BRE) and Extended Regular Expression (ERE). Regular expressions supported by Altibase have the following limitations and features. +Regular expressions supported by Altibase have the following limitations and features. - Multibyte characters are unsupported. - Backreferences ( \digit) are unsupported. @@ -23287,6 +23427,14 @@ Regular expressions are a syntax convention for writing text patterns and consis - Conditional regular expressions (e.g., condition)B|C) are unsupported. - The escape character is supported. +#### 정규 표현식 문법 + +다음은 Altibase 정규 표현식 모드의 정규 표현식 문법에 대한 설명이다. + +##### 문자 클래스 + +문자 클래스는 자주 사용하는 문자 집합들을 정의한 것이다. 문자 클래스는 이스케이프 스퀀스로 표현하거나 대괄호로 둘러싸인 POSIX 표기법을 사용할 수도 있다. + The following table describes character classes. | Character class | Shorthand | Description | @@ -23337,6 +23485,14 @@ dot. For example, a.c matches “abc”, but [a.c] matches only “a”, “.” +

\

+ + +

뒤에 오는 메타 문자를 보통 문자로 취급한다

+ + + +

[]

@@ -23437,3 +23593,597 @@ complex regular expression.

+ +##### 공백 문자 + +다음은 정규 표현식에서 탭이나 줄바꿈과 같은 눈에 보이지 않는 문자를 검색할 때 사용하는 이스케이프 시퀀스(escape sequence)이다. + +| 이스케이프 시퀀스 | 의미 | +| ----------------- | ---------------------------- | +| \t | 탭(tab) | +| \n | 줄바꿈(line feed) | +| \r | 캐리지 리턴(carriage return) | +| \f | 다음 페이지(form feed) | + + + +### PCRE2 호환 모드 + +Altibase의 정규 표현식 모드 중 PCRE2 호환 모드에 대해 살펴보자. + +PCRE2 호환 모드는 PCRE2 라이브러리의 정규 표현식 문법을 지원한다. 사용된 PCRE2 라이브러리의 버전은 10.40이다. + +#### 특징 + +먼저, PCRE2 호환 모드는 아래와 같은 특징과 제약 사항이 있다. + +- Altibase 서버 캐릭터셋이 US7ASCII 또는 UTF-8일 때 사용할 수 있다. +- 한글 검색이 가능하다. +- 역참조, 전방 탐색, 후방 탐색 그리고 조건부 정규 표현식을 지원한다. +- Altibase 정규 표현식 모드와 PCRE2 호환 모드의 정규 표현식 문법은 일부 차이가 있다. 따라서, PCRE2 호환 모드로 설정하면 Altibase 정규 표현식 모드에서 지원하는 문법을 사용할 수 없거나 같은 정규 표현식 문법을 사용하더라도 질의문의 결과가 달라질 수 있다. 대표적인 차이점은 하단의 [정규 표현식 모드 별 문법 차이점](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/SQL Reference.md#정규-표현식-모드-별-문법-차이점)을 참고한다. + +#### 정규 표현식 문법 + +PCR2E 호환 모드에서 사용할 수 있는 대표적인 정규 표현식 문법에 대해 알아보자. 본 매뉴얼에서 다루지 않은 PCRE2 라이브러리의 정규 표현식 문법은 [PCRE2 패턴 매뉴얼 페이지](https://www.pcre.org/current/doc/html/pcre2pattern.html)를 참고하기 바란다. + +##### 메타 문자 + +메타 문자는 정규 표현식에서 사용하는 특별한 의미를 가지는 기호이다. PCRE2 호환 모드에서 메타 문자는 대괄호 안을 제외한 어느 곳에서나 인식되는 메타 문자와 대괄호 안에서 사용되는 메타 문자가 있다. + +> ###### 대괄호 밖에서의 메타 문자 + +| 메타 문자 | 의미 | +| --------- | --------------------------------------- | +| \ | 여러 용도로 사용되는 이스케이프 문자 | +| ^ | 문자열(또는 여러 줄 모드에서 줄)의 시작 | +| $ | 문자열(또는 여러 줄 모드에서 줄)의 끝 | +| . | 줄바꿈 문자를 제외한 모든 문자와 일치 | +| [ | 문자 클래스 정의 시작 | +| \| | 여러 식 중 하나를 선택 | +| ( | 그룹 또는 제어 동사 시작 | +| ) | 그룹 또는 제어 동사 끝 | +| * | 0회 이상 일치하는 문자 | +| + | 1회 이상 일치하는 문자 | +| ? | 0 또는 1회 일치하는 문자 | +| { | 최소/최대값 | + +> ###### 대괄호 안에서의 메타 문자 + +| 메타 문자 | 의미 | +| --------- | ------------------------------------------------------- | +| \ | 뒤의 문자를 일반 문자로 인식 | +| ^ | ^ 바로 뒤 문자나 범위 또는 집합 안의 문자나 범위를 제외 | +| - | 문자 범위 | +| [ | 문자 클래스 시작 | +| ] | 문자 클래스의 종료 | + +##### 출력할 수 없는 문자 + +다음은 출력할 수 없는 문자를 의미하는 이스케이프 시퀀스를 정리한 표이다. + +| 이스케이프 시퀀스 | 의미 | +| ----------------- | ------------------------------------------------------------ | +| \a | 경고음 문자 | +| \c*x* | control-*x* 문자. *x*는 출력 가능한 아스키 문자가 올 수 있다. | +| \e | ESC 문자(escape). 아스키 코드의 27번째 문자(hex 1B) | +| \f | 다음 페이지(form feed). 아스키 코드의 12번째 문자(hex 0C) | +| \n | 줄바꿈 문자(line feed). 아스키 코드의 10번째 문자(hex 0A) | +| \r | 캐리지 리턴(carriage return). 아스키 코드의 13번째 문자(hex 0D) | +| \t | 탭(tab). 아스키 코드의 9번째 문자(hex 09) | +| \0*dd* | 아스키 코드의 8진수 코드 *dd*에 해당하는 문자. 예를 들어 \061은 숫자 1을 의미한다. | +| \*ddd* | 아스키 코드의 8진수 코드 *ddd*에 해당하는 문자 또는 역참조를 의미한다. | +| \o{*ddd..*} | 아스키 코드의 8진수 코드 *ddd...* 에 해당하는 문자 | +| \x*hh* | 아스키 코드의 16진수 코드 *hh*에 해당하는 문자. 예를 들어 \x31은 숫자 1을 의미한다. | +| \x{*hhh..*} | 아스키 코드의 16진수 코드 *hhh...* 에 해당하는 문자 | +| \N{U+*hhh..*} | 유니코드 16진수 코드 *hhh..* 값에 해당하는 문자 | + +**예제** + +<질의> 이스케이프 시퀀스를 사용하여 아스키 코드 16진수 31에 해당하는 숫자 1을 포함하는 문자열을 검색한다. + +``` +iSQL> SELECT GNAME FROM GOODS WHERE REGEXP_LIKE(GNAME, '\x31'); +GNAME +------------------------ +IM-310 +M-150 +M-180 +M-190G +M-U310 +M-T153 +M-T102 +AU-100 +8 rows selected. +``` + + + +##### 일반 문자 유형 + +다음은 자주 사용하는 일반 문자 집합들을 의미하는 이스케이프 시퀀스를 정리한 표이다. + +| 이스케이프 시퀀스 | 의미 | +| ----------------- | -------------------------------------------- | +| \d | 10진수 숫자 | +| \D | 10진수 숫자가 아닌 문자 | +| \h | 수평 공백 문자, 예를 들어 스페이스와 탭 문자 | +| \H | 수평 공백 문자가 아닌 문자 | +| \N | 줄바꿈 문자가 아닌 문자 | +| \p{*xx*} | *xx* 속성을 가진 유니코드 문자 | +| \P{*xx*} | *xx* 속성이 없는 유니코드 문자 | +| \R | 줄바꿈 문자 | +| \s | 공백 문자 | +| \S | 공백 문자가 아닌 문자 | +| \v | 수직 공백 문자, 예를 들어 줄바꿈 문자 | +| \V | 수직 공백 문자가 아닌 문자 | +| \w | 단어(word) 문자 | +| \W | 단어(word) 문자가 아닌 문자 | +| \X | 유니코드 확장 문자소 클러스터 | + +> ###### 유니코드 문자 속성 + +\p{*xx*}와 \P{*xx*}에서 사용 가능한 유니코드에서 일반 범주로 분류된 문자 속성을 나타내는 표이다. *xx*로 표시되는 속성은 대소문자를 구분하며 중괄호("{}")는 선택 사항으로 아래의 두 예제는 같은 속성을 의미한다. + +``` +\p{L} +\pL +``` + + + +| 속성 | 의미 | +| ---- | ------------------------------------------------------------ | +| C | 기타(Other). C로 시작하는 속성을 모두 포함한다. | +| Cc | 제어(Control) | +| Cf | 형식(Format) | +| Cn | 미할당(Unassigned) | +| Co | 내부 용도(Private use) | +| | | +| L | 문자(Letter). L로 시작하는 속성을 모두 포함한다. | +| Ll | 영문자 소문자(Lower case letter) | +| Lm | 수정자(Modifier letter) | +| Lo | 기타 문자(Other letter) | +| Lt | 첫 글자가 영문자 대문자인 문자(Title case letter) | +| Lu | 영문자 대문자(Upper case letter) | +| L& | 영문자 소문자, 대문자 또는 첫 글자가 대문자인 문자(Ll, Lu, or Lt) | +| | | +| M | 표시(Mark). M으로 시작하는 속성을 모두 포함한다. | +| Mc | 띄어쓰기 표시(Spacing mark) | +| Me | 둘러싸는 표시(Enclosing mark) | +| Mn | 비공백 표시(Non-spacing mark) | +| | | +| N | 숫자(Number). N으로 시작하는 속성을 모두 포함한다. | +| Nd | 10진수(Decimal number) | +| Nl | 문자로 표현하는 숫자(Letter number) | +| No | 기타 숫자(Other number) | +| | | +| P | 문장 부호, 구두법(Punctuation). P로 시작하는 속성을 모두 포함한다. | +| Pc | 연결 문장 부호(Connector punctuation) | +| Pd | 대시 또는 하이픈 문장 부호(Dash punctuation) | +| Pe | 종결 문장 부호. 닫힌, 엄격한 구두법(Close punctuation) | +| Pf | 종결 문장 부호(Final punctuation) | +| Pi | 시작 문장 부호(Initial punctuation) | +| Po | 기타 구두(Other punctuation) | +| Ps | 시작 문장 부호. 열린 구두법(Open punctuation) | +| | | +| S | 기호(Symbol). S로 시작하는 속성을 모두 포함한다. | +| Sc | 화폐 기호(Currency symbol) | +| Sk | 수정자 기호(Modifier symbol) | +| Sm | 수학 기호(Mathematical symbol) | +| So | 기타 기호(Other symbol) | +| | | +| Z | 구분자(Separator). Z로 시작하는 속성을 모두 포함한다. | +| Zl | 행 구분자(Line separator) | +| Zp | 단락 구분자(Paragraph separator) | +| Zs | 공백 구분자(Space separator) | +| | | +| Xan | 알파벳과 숫자. L 속성과 N 속성을 모두 포함한다. Alphanumeric: union of properties L and N | +| Xps | POSIX 공백 문자: Z 속성 또는 탭, 줄바꿈 문자, 수직 탭, 다음 페이지, 캐리지 리턴 POSIX space: property Z or tab, NL, VT, FF, CR | +| Xsp | Perl 공백 문자: Z 속성 또는 탭, 줄바꿈 문자, 수직 탭, 다음 페이지, 캐리지 리턴 Perl space: property Z or tab, NL, VT, FF, CR | +| Xuc | 유니버설 문자 이름 Univerally-named character: one that can be represented by a Universal Character Name) | +| Xwd | Perl 단어: 속성 Xan 또는 밑줄 Perl word: property Xan or underscore | + +**예제** + +<질의> 이스케이프 시퀀스 \p를 사용하여 EMPLOYEES 테이블의 EMP_JOB 컬럼에서 영문자 소문자와 일치하는 유니코드 문자가 포함된 데이터를 조회한다. + +``` +iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, '\p{Ll}'); +EMP_JOB +------------------- +webmaster +manager +planner +3 rows selected. +``` + + + +> ###### 유니코드 스크립트 이름 + +\p{*xx*}와 \P{*xx*}의 *xx* 속성에 다음과 같이 유니코드 스크립트 이름을 사용할 수도 있다. + +``` +\p{Greek} +\P{Han} +``` + + + +지원하는 스크립트 목록은 아래와 같다. + +``` +Adlam, Ahom, Anatolian_Hieroglyphs, Arabic, Armenian, Avestan, Balinese, Bamum, Bassa_Vah, Batak, Bengali, Bhaiksuki, Bopomofo, Brahmi, Braille, Buginese, Buhid, Canadian_Aboriginal, Carian, Caucasian_Albanian, Chakma, Cham, Cherokee, Chorasmian, Common, Coptic, Cuneiform, Cypriot, Cypro_Minoan, Cyrillic, Deseret, Devanagari, Dives_Akuru, Dogra, Duployan, Egyptian_Hieroglyphs, Elbasan, Elymaic, Ethiopic, Georgian, Glagolitic, Gothic, Grantha, Greek, Gujarati, Gunjala_Gondi, Gurmukhi, Han, Hangul, Hanifi_Rohingya, Hanunoo, Hatran, Hebrew, Hiragana, Imperial_Aramaic, Inherited, Inscriptional_Pahlavi, Inscriptional_Parthian, Javanese, Kaithi, Kannada, Katakana, Kayah_Li, Kharoshthi, Khitan_Small_Script, Khmer, Khojki, Khudawadi, Lao, Latin, Lepcha, Limbu, Linear_A, Linear_B, Lisu, Lycian, Lydian, Mahajani, Makasar, Malayalam, Mandaic, Manichaean, Marchen, Masaram_Gondi, Medefaidrin, Meetei_Mayek, Mende_Kikakui, Meroitic_Cursive, Meroitic_Hieroglyphs, Miao, Modi, Mongolian, Mro, Multani, Myanmar, Nabataean, Nandinagari, New_Tai_Lue, Newa, Nko, Nushu, Nyakeng_Puachue_Hmong, Ogham, Ol_Chiki, Old_Hungarian, Old_Italic, Old_North_Arabian, Old_Permic, Old_Persian, Old_Sogdian, Old_South_Arabian, Old_Turkic, Old_Uyghur, Oriya, Osage, Osmanya, Pahawh_Hmong, Palmyrene, Pau_Cin_Hau, Phags_Pa, Phoenician, Psalter_Pahlavi, Rejang, Runic, Samaritan, Saurashtra, Sharada, Shavian, Siddham, SignWriting, Sinhala, Sogdian, Sora_Sompeng, Soyombo, Sundanese, Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai_Le, Tai_Tham, Tai_Viet, Takri, Tamil, Tangsa, Tangut, Telugu, Thaana, Thai, Tibetan, Tifinagh, Tirhuta, Toto, Ugaritic, Vai, Vithkuqi, Wancho, Warang_Citi, Yezidi, Yi, Zanabazar_Square +``` + + + +> ###### 유니코드 확장 문자소 클러스터 + +\X 이스케이프 시퀀스는 유니코드 확장 문자소 클러스터(Unicode extended grapheme cluster)를 의미한다. 자소 집합(grapheme cluster)은 사람이 읽을 수 있는 단일 문자를 말하며 하나의 자소 집합은 여러 개의 코드 포인트(code points)로 이루어진다. + +확장 문자소 클러스터로 구성된 유니코드 캐릭터들과 매치된다. 확장 문자소에 대한 자세한 정보는 [유니코드 공식 문서 UAX #29: Unicode Text Segmentation](http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)를 참고하기 바란다. 확장 문자소 매칭에 대한 자세한 정보는 [PCRE2 패턴 매뉴얼 페이지](https://www.pcre.org/current/doc/html/pcre2pattern.html)를 참고하기 바란다. + +##### POSIX 문자 클래스 + +문자 클래스는 자주 사용하는 문자 집합들을 정의한 것이다. 문자 클래스는 [일반 문자 유형](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/SQL Reference.md#일반-문자-유형)처럼 이스케이프 시퀀스로 표현하거나 아래 표와 같이 대괄호로 둘러싸인 POSIX 표기법을 사용할 수도 있다. POSIX 문자 클래스는 "[:" 와 ":]"로 둘러싸여 있다. 바깥쪽 대괄호는 문자 집합을 정의하는 것이고 안쪽 대괄호는 POSIX 문자 클래스 문법 자체를 의미한다. + +| POSIX 문자 클래스 | 의미 | +| ----------------- | ------------------------------------------------------------ | +| [[:alnum:]] | 알파벳과 숫자 | +| [[:alpha:]] | 알파벳 문자 | +| [[:ascii:]] | 아스키 코드에서 0번부터 127번까지의 문자 | +| [[:blank:]] | 스페이스나 탭 | +| [[:cntrl:]] | 아스키 코드에서 127번 문자와 31번 이하의 문자 | +| [[:digit:]] | 숫자 | +| [[:graph:]] | 아스키 코드에서 출력할 수 있는 문자 32 ~ 126 중, 공백 문자(32)를 제외한 문자 | +| [[:lower:]] | 알파벳 소문자 | +| [[:print:]] | 아스키 코드에서 출력할 수 있는 문자 32 ~ 126 | +| [[:punct:]] | 아스키 코드에서 출력할 수 있는 문자 32 ~ 126 중, 공백 문자, 숫자, 알파벳을 제외한 문자 | +| [[:space:]] | 출력되지 않는 공백 문자(space, carriage return, newline, vertical tab, form feed) 등 | +| [[:upper:]] | 알파벳 대문자 | +| [[:word:]] | 알파벳, 숫자, _ | +| [[:xdigit:]] | 16진수 숫자, 0-9, a-f, A-F | + +**예제** + +<질의> POSIX 문자 클래스를 사용하여 EMPLOYEES 테이블의 EMP_JOB 컬럼에서 영문자 대문자가 포함된 데이터를 조회하라. + +``` +iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, '[[:upper:]]'); +EMP_JOB +------------------- +CEO +PL +PL +PM +PM +PM +6 rows selected. +``` + + + +##### 간단한 어설션 + +어설션(assertions)은 어떤 문자 또는 문자열의 앞과 뒤를 확인하는 것을 의미한다. [메타 문자](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/SQL Reference.md#메타-문자-1)에서 소개한 "^"와 "$"는 어설션의 하나이며 '앵커'라고 부르기도 한다. + +| 이스케이프 시퀀스 | 설명 | +| ----------------- | ------------------------------------------------------------ | +| \A | 문자열의 시작 위치 | +| \b | 단어 경계. 단어의 시작이나 마지막 위치 | +| \B | 단어 경계가 없을 때 일치 | +| \G | 문자열에서 첫 번째 일치 위치 | +| \z | 문자열의 마지막 위치 | +| \Z | 문자열의 마지막 위치 또는 문자열의 마지막 문자인 줄바꿈 문자 바로 전 위치 | + +**예제** + +<질의> CUSTOMERS 테이블에서 Street 단어가 포함된 주소(ADDRESS)와 고객 번호(CNO)를 조회하라. + +``` +iSQL> SELECT CNO, ADDRESS FROM CUSTOMERS WHERE REGEXP_COUNT(ADDRESS, '\bStreet\b') > 0; +CNO ADDRESS +---------------------------------------------------------------------------- +5 142 Francis Street Western Australia AUS +10 8A Ton Duc Thang Street District 1 HCMC Vietnam +12 3484 Taylor Street Dallas TX USA +13 12th Floor Five Kemble Street London UK +18 2 Chaoyang Men Wai Street Chaoyang Beijing +19 3300 L Street NW Washington DC USA +6 rows selected. +``` + + + +<질의> EMPLOYEES 테이블에서 er 문자로 끝나는 직업을 가진 직원 번호(EMP_JOB)와 직업 이름(EMO)을 조회하라. + +``` +iSQL> SELECT ENO, EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, 'er\Z'); +ENO EMP_JOB +------------------------------------------------------------------- +2 designer +3 engineer +6 programmer +7 manager +8 manager +9 planner +10 programmer +11 webmaster +15 webmaster +16 manager +18 planner +11 rows selected. +``` + + + +##### 그룹화 구문 + +"("와 ")"는 그룹을 표현하는 메타 문자이다. 괄호 안에 여러 표현식을 하나로 묶어 그룹화한 영역을 캡쳐 그룹(capture group)이라고 한다. + +| 문법 | 설명 | +| ------------- | ------------------------------------------------------------ | +| (...) | 괄호 안에서 지정한 문자열을 검색 capture group | +| (?...) | 캡쳐 그룹의 이름을 지정하는 펄 문법이다. named capture group (Perl) | +| (?'name'...) | 캡쳐 그룹의 이름을 지정하는 펄 문법이다. named capture group (Perl) | +| (?P...) | 캡쳐 그룹의 이름을 지정하는 파이썬 문법이다. named capture group (Python) | +| (?:...) | 비캡쳐 그룹 non-capture group | +| (?\|...) | 비캡쳐 그룹 non-capture group; reset group numbers for capture groups in each alternative | +| (?>...) | 역참조 기능을 없앤 비캡쳐 그룹 atomic non-capture group | +| (*atomic:...) | 역참조 기능을 없앤 비캡쳐 그룹 atomic non-capture group | + +**예제** + +<질의> GOODS 테이블에서 상품 이름(GNAME)이 TM-T, TM-U, M-T, M-U가 포함된 상품을 조회하라. + +``` +iSQL> SELECT GNAME FROM GOODS WHERE REGEXP_LIKE(GNAME, '(TM|M)-(T|U)') ; +GNAME +-------------------------------------------- +TM-T88 +TM-U950 +TM-U925 +TM-U375 +TM-U325 +TM-U200 +TM-U300 +TM-U590 +TM-U295 +M-T245 +M-U310 +M-T153 +M-T102 +M-T500 +M-T300 +M-T260 +M-U420 +M-U290 +``` + + + +##### 탐색 구문 + +찾고자 하는 문자열의 앞 또는 뒤에 지정한 문자열이 있는지 확인한다. + +| 문법 | 설명 | +| ----------------------------------------------------------- | ------------------------------------------------------------ | +| (?=...) (*pla:...) (*positive_lookahead:...) | 긍정형 전방 탐색(Positive lookaheads) 찾고자 하는 문자열 바로 오른쪽에 `...` 에 해당하는 문자열이 있는 문자열을 검색한다. | +| (?!...) (*nla:...) (*negative_lookahead:...) | 부정형 전방 탐색(Negative lookaheads) 찾고자 하는 문자열 바로 오른쪽에 `...` 에 해당하는 문자열이 없는 문자열을 검색한다. | +| (?<=...) (*plb:...) (*positive_lookbehind:...) | 긍정형 후방 탐색(Positive lookbehinds) 찾고자 하는 문자열 바로 왼쪽에 `...` 에 해당하는 문자열이 있는 문자열을 검색한다. | +| (? 긍정형 전방 탐색을 사용하여 EMPLOYEES 테이블의 EMP_JOB 컬럼에서 sales 바로 오른쪽에 rep가 있는 데이터를 조회하라. + +``` +iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, 'sales (?=rep)'); +EMP_JOB +-------------------------------------------------------------------------------------------------------- +sales rep +sales rep +sales rep +3 rows selected. + +iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, 'sales (*pla:rep)'); +EMP_JOB +-------------------------------------------------------------------------------------------------------- +sales rep +sales rep +sales rep +3 rows selected. +``` + + + +<질의> 부정형 전방탐색을 사용하여 GOODS 테이블의 GNAME 컬럼에서 TM- 문자열 오른쪽에 U가 나오지 않는 데이터를 조회하라. + +``` +iSQL> SELECT GNAME FROM GOODS WHERE REGEXP_LIKE(GNAME, 'TM-(?!U)'); +GNAME +-------------------------------------------------------------------------------------------------------- +TM-H5000 +TM-T88 +TM-L60 +3 rows selected. + +iSQL> SELECT GNAME FROM GOODS WHERE REGEXP_LIKE(GNAME, 'TM-(*nla:U)'); +GNAME +-------------------------------------------------------------------------------------------------------- +TM-H5000 +TM-T88 +TM-L60 +3 rows selected. +``` + + + +##### 수량자 + +찾고자 하는 문자가 몇 번 반복하는 지 지정하여 검색한다. + +| 문법 | 설명 | +| ------ | ------------------------------------------------------------ | +| ? | 앞의 문자가 0번 또는 1번 나오는 문자를 찾는다. 욕심 많은(greedy) 수량자 방식으로 검색한다. | +| ?+ | 앞의 문자가 0번 또는 1번 나오는 문자를 찾는다. 독점적인(possessive) 수량자 방식으로 검색한다. | +| ?? | 앞의 문자가 0번 또는 1번 나오는 문자를 찾는다. 게으른(lazy) 수량자 방식으로 검색한다. | +| * | 앞의 문자가 0 번 이상 등장하는 문자를 찾는다. 욕심 많은 수량자 방식으로 검색한다. | +| *+ | 앞의 문자가 0 번 이상 등장하는 문자를 찾는다. 독점적인 수량자 방식으로 검색한다. | +| *? | 앞의 문자가 0 번 이상 등장하는 문자를 찾는다. 게으른 수량자 방식으로 검색한다. | +| + | 앞의 문자가 1회 이상 나오는 문자를 찾는다. 욕심 많은 수량자 방식으로 검색한다. | +| ++ | 앞의 문자가 1회 이상 나오는 문자를 찾는다. 독점적인 수량자 방식으로 검색한다. | +| +? | 앞의 문자가 1회 이상 나오는 문자를 찾는다. 게으른 수량자 방식으로 검색한다. | +| {n} | 앞의 문자가 n회 나오는 문자를 찾는다. | +| {n,m} | 앞의 문자가 최소 n번, 최대 m회 반복되는 문자를 찾는다. 욕심 많은 수량자 방식으로 검색한다. | +| {n,m}+ | 앞의 문자가 최소 n번, 최대 m회 반복되는 문자를 찾는다. 독점적인 수량자 방식으로 검색한다. | +| {n,m}? | 앞의 문자가 최소 n번, 최대 m회 반복되는 문자를 찾는다. 게으른 수량자 방식으로 검색한다. | +| {n,} | 앞의 문자가 n회 이상 나오는 문자를 찾는다. 욕심 많은 수량자 방식으로 검색한다. | +| {n,}+ | 앞의 문자가 n회 이상 나오는 문자를 찾는다. 독점적인 수량자 방식으로 검색한다. | +| {n,}? | 앞의 문자가 n회 이상 나오는 문자를 찾는다. 게으른 수량자 방식으로 검색한다. | + +**예제** + +<질의> CUSTOMERS 테이블에서 고객 주소에서 숫자 뒤에 th가 1번 나오는 주소(ADDRESS)와 고객 번호(CNO)를 조회하라. + +``` +iSQL> SELECT CNO, ADDRESS FROM CUSTOMERS WHERE REGEXP_LIKE(ADDRESS, '[0-9]th{1}'); +CNO ADDRESS +-------------------------------------------------------------------------------------- +2 4712 West 10th Avenue Vancouver BC Canada +9 10th Floor No. 334 Jiujiang Road Shanghai +13 12th Floor Five Kemble Street London UK +3 rows selected. +``` + + + +##### 역참조 + +참조해둔 패턴을 숫자 또는 이름으로 다시 사용하는 것을 의미한다. + +| 문법 | 설명 | +| --------- | ---------------------------------------------------------- | +| \n | 번호를 사용하여 참조 (정규식에 따라 순번이 모호할 수 있음) | +| \gn | 번호를 사용하여 참조 | +| \g{n} | 번호를 사용하여 참조 | +| \g+n | 번호를 사용한 상대 참조 (PCRE2 확장 문법) | +| \g-n | 번호를 사용한 상대 참조 | +| \g{+n} | 번호를 사용한 상대 참조 (PCRE2 확장 문법) | +| \g{-n} | 번호를 사용한 상대 참조 | +| \k | 이름을 사용하여 참조 (Perl 문법) | +| \k'name' | 이름을 사용하여 참조 (Perl 문법) | +| \g{name} | 이름을 사용하여 참조 (Perl 문법) | +| \k{name} | 이름을 사용하여 참조 (.NET 문법) | +| (?P=name) | 이름을 사용하여 참조 (Python 문법) | + +##### 조건부 일치 + +"|"로 구분된 문자 중 하나를 하나를 선택하여 검색한다. + +| 문법 | 설명 | +| ---------------- | ----------------------------- | +| expr\|expr\|expr | 여러 식 중에 하나를 선택한다. | + +**예제** + +<질의> EMPLOYEES 테이블에서 016이나 018로 시작하는 전화번호(EMP_TEL)와 직원 번호(ENO)를 조회하라. + +``` +ISQL> SELECT ENO, EMP_TEL FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_TEL, '^016|018'); +ENO EMP_TEL +-------------------------------- +3 0162581369 +4 0182563984 +9 0165293668 +10 0167452000 +13 0187636550 +17 0165293886 +19 0185698550 +7 rows selected. +``` + + + +##### 정규표현식의 옵션 + +"(?"와 ")" 사이에 묶인 문자로, 정규표현식에서 특별한 지시를 내리는 기호이다. + +| 옵션 | 설명 | +| ------- | ------------------------------------------------------------ | +| (?i) | 대소문자 무시 | +| (?J) | 같은 이름을 가지는 그룹 허용 | +| (?m) | 다중 행에서 검색 | +| (?n) | 자동 캡쳐를 사용하지 않음 | +| (?s) | 단일 행에서 검색 | +| (?U) | 비탐욕적(게으른) 방법으로 검색 | +| (?x) | 공백 문자를 무시한다. 문자 클래스 안의 공백 문자는 예외이다. | +| (?xx) | 공백 문자를 무시한다. 문자 클래스 안의 공백 문자도 무시한다. | +| (?-...) | 설정된 옵션(들) 해제 | +| (?^) | imnsx 옵션 해제 | + +**예제** + +<질의> EMPLOYEES 테이블에서 대소문자 구분없이 m이 포함된 성(E_LASTNAME)을 검색하라. + +``` +iSQL> SELECT E_LASTNAME FROM EMPLOYEES WHERE REGEXP_LIKE(E_LASTNAME, '(?i)m'); +E_LASTNAME +---------------------------------------------------------------- +Moon +Momoi +Hammond +Miura +Marquez +5 rows selected. +iSQL> +``` + + + +##### 주석 + +정규표현식에서 사용하는 주석이다. "(?#"는 주석의 시작을 의미하며 닫는 괄호(")")는 주석의 끝을 의미한다. + +| 문법 | 설명 | +| -------- | ---- | +| (?#....) | 주석 | + +**예제** + +<질의> + +``` +iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, '(?i)M(?#test)A(s|n)'); +EMP_JOB +------------------- +webmaster +manager +2 rows selected. +``` + + + + + +### 정규 표현식 모드 별 문법 차이점 + +Altibase 정규 표현식 모드와 PCRE2 호환 모드의 정규 표현식 문법 차이를 나타내는 대표적인 예이다. + +| 정규 표현식 문법 | Altibase 정규 표현식 모드 | PCRE2 호환 모드 | 차이 | +| ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| POSIX 문자 클래스 | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[:punct:]+');` | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[[:punct:]]+');` | POSIX 문자 클래스 표현식이 다르다. | +| 이스케이프 스퀀스 | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','\l+');` | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[[:lower:]]+');` | PCRE2 호환 모드에서는 `\l`문법을 지원하지 않는다. [[:lower:]]로 대체할 수 있다. | +| POSIX 동등 클래스 | [=A=] | - | 지원하지 않는다. | +| | [A-[.CH.]] | - | 지원하지 않는다. | + +### 정규 표현식 에러 메시지 + +PCRE2 호환 모드에서 발생하는 에러 중 0x2106C 에러 코드는 아래와 같은 형식으로 에러 메시지가 출력된다. <1%s>는 PCRE2 라이브러리에서 반환한 메시지이며 <0%s>는 Altibase 에서 해당 에러가 발생한 위치를 의미한다. 이 에러 메시지에 대한 원인과 조치 방법은 Error Message Reference의 [15.Regular Expression Error Code](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/Error Message Reference.md#15regular-expression-error-code) 장에서 확인할 수 있다. + +``` +ERR-2106C : PCRE2 error: <1%s> (occurred in <0%s>) +``` diff --git a/Manuals/Altibase_7.3/eng/media/SQL/join_table.gif b/Manuals/Altibase_7.3/eng/media/SQL/join_table.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ef1f667190d0f5bc2e35e39522d8c8939c80f11 GIT binary patch literal 4407 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 literal 0 HcmV?d00001 diff --git a/Manuals/Altibase_7.3/eng/media/SQL/multiple_update.gif b/Manuals/Altibase_7.3/eng/media/SQL/multiple_update.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f7a7ff90dd713686027cd7ed237683eace6759e GIT binary patch literal 5070 zcmeH|=|7YUw0;8zHhE`=g;aJxP?G*Ko9_E0{`;g9{X>K zh=_=bi%UsKArJ^TIXMglgTvtn1cHi+ikh05wzjseuCBhmzM-KZnM^h@F)=qcx3jZz za&mHWbMy1_3k(bl4i3I`>sDA;Sa^6iolcLAj(+gq0h7th&dz@F2 zuWxQ{e)jBHS65eWZ|~sXAfL~lo}QkYn_E~|SYBRUTU*=Q-2Cz5$Ii~qe;59b{~7py zHXyzOc!_tc=jZn@#AQj2L$&O_ScI}E%cQPgAQ5xee}1U0@cBc+=>**QdX;mMIwBP! zK?TLUOl=P?>wH7W=wtnxtMkJRrDJ(yh9us!v2481B#q?6ZB(~_X<12%5Sl7pR8kxK zUvrx(Up{s1OTe2oSIsu~PF6VanyX*61ij^kClV^GDsFDAzUH+&ebY^Y!4)sGt}i^Z z-jH`5X{~$vJVn_o_X1XHshxQ^U}2=K;lo%y%*7e|tZ`+s>`JBc>(Fmj)3qMF+>7nE zy9Y4F5#wuOLx=ze|TYJmPyRLZhpWoYCr&^wNckk>pZR`@#L{J~IX=18n!pIn< zAt3{CRy>m-W8=FR?P3wP7=yc3<`zqcX%)uq%kXu-uaaA~l<=ik-$m+DXCsuTd;5d? zp9ef^X@Dxe2moc0%-^O=ye@N=LK8T2$%syZkqDecewWV0`sKoRhoq#sk_?3)(-q}I z4Aau(6uBXN5z9H94~yliKCr9a&%Tz} zd*?kT&(dQ3y|t!_E2=QgJ0YiF{sh6x_F+VEWU+Tx#Y*|&?3tX11DJIt3}d{LLW5}z z5z4D^L-LgBJpfrlV$aCk5?e(p+G-suH~}v%*O5cpMbbymrPyNd>c&G+DL~p-1(^SdGMAgJ|4^Y0p|Law>G6m;@kY2csZ_IJm;lYuC0;kikJI6{(88ssCU}oqN+(AyElHux2aj zm=xRt)GsQge4L$T4>J_(5t55u}UP&)x$Nutj)s3FZ`gjQU zpRDEbozY)k9NLm`pS29vb=*$BO#Z!YzY>A_{O#!apRPFFO6F?+xr5A&L8XIzl5lZ@ zEVzs(2l;Kn>~eVUG;bYBCv1PpltdCZAO32Nz5Mrf5A(jRsEF=5SxoP*um66*6ir0Y zl_q)z@OJ=R9Bl}Zz_E2Y;+{|fv7IG%hY*Pw$rtA4F0l00Gj!P<5zj`9o>9D)I=C#(y<5=LC|}(N<`(f z$*_s^ev-Wf40{IvbEpRp_M+FGJYtjk^|6vHbMU$}9nvL~a+83##9f}^w&Np9?cUY?&~NSD4n9l^De!S81G3E) zTIh8}U+%Z_-Tgvvj#Pc+~3S9GDt8MVuzGIVbxqzx&UwoArUkV|ST zv^P*a1ZvkbRk>!n&#Je^h)z{XnPrmVZR|_|uv?C&K@xa4H>{estO-~_uM;Higz5HP zi>|>ABoTS`%(4hw%gGy6rZU1vD$$B$8ogrUNiqSbG%Xy$i#la+IYcb6@)l#+5L_qP zjdDc`Az-#w1_s-qT{&pLL)Xco%x$Fb_I zR?Anf=2p(4^U0S6AnRCD(O2 z7j-~QXcn@R2u-F2*agjHmJ+|46;>eq&k>79E=}j}&%auxChX{}zEFelMM*W17!~}9 z9$TfL2OYB@WSPTiNzd&&qh9O zy~wN#9NpL>yRIHK0q^iAr*&=iT2#ipbe@F{ifRKk<;GN^;>>!U3ArxJ3F9b-8X9DM zc2EmAv%@{@Pmw^IFIBL%qr}QM4;v<&%1xTsI3cYo<(F5x1wpX&ts=2~X<J;}^%|EEDV+ex+5xMrM)p!ylVDl7)|u9atmWZFG4+uzdpStA+otD5 zySNUu9ZM_Hg(>{o*h@wjGR>?L|qOFpauowPazp|&Z7H%b@N0DNG zuPceTk{=G90REx$&+e6`-FhIkaL)QzlMFm0KXBNu))xRVeq_LS^lQX#hpEGBTnX1f zPb;2-pz?>W$4(S|0!q9F)m$CP5b+J$l7E9X;I!)TH&S$6qb=lSoCep#)$VKBOPp}8q-4rFB!&XP~{jNP=PXS^~7$2~)BPOo3fJ7h;} zsrk!Rl?LX=ae(7WJ%9+`b}ucoR${E)RBgTH6tQJAMB`~^x_6stx$X*;eaxIH^X=KI zPE~`EcyUYdtJwMMDD{PFw)%IW-^*~IslcHBqQBn$v##D`(O~Pyk;ik%_8N0IUdG-RFx{bt4q`RsPc7?^PVxS(AMQ{$+nJkG0RMA5$09zSgCbC-jia! zZY@n08Cn9f*>`Q=C!g|9N!@2i-qG}CL?pIDAF87WF9p&5J&@CvmmXcB_iYA(bi@w3 z$!bai2blXjEM?pd4La9-wPs9I!)<@y!ycM7~&Sg_7|?mBk|C29U%VYsez< zlE`hUQnW>x?vX|vpG}6PkahlK7>4MyxlRzFY^X>_pwmdutUg9h;&PTW`T2 z7BTFlVQ@mEFUT;;LiH5hKlK7QzI{bIPW8%BR1#HD-j(6M5p!KRj_DR(XA!F!5^KMB z@zWr7H5QeA2idK!FxnWmMUPP_ikVc3e{GzY?v~g<+3(V$7HEQ11i;dd$eue$JOP{) zmw&naz;Qg`?P45JB;Hdg@zo4Qpr$aPMzWj0Y7syOSQ38*xlaISWXNw(ANo*|g&PUP zkcVG;lKvcrM1sypmQ%#ZaYGx)E{o9lRFLh9xwH>lYe0SaXoE;0zMx_c0ubisNk1^< z4Lylil;ow9ct`-kf2Jb(!6gh1fjxk$1%MqgfZs2zFQK9$VJ@zLun4H9x*^23<@={cw~x6cN>Rn4CJVOF>8yE76?*9A(!mqV(Oyi7R*W+398(H(x*^l(I)7vsKhVfb1_?&D!t1UG|{ZyhIzAzqN9FH%}PAI#1QP=CxJl}w4s&rlcRZ1)NhFAwCsqa?rd z#3>&ubhIeEa--015t8H-+UX=Q>Ix<($$jU{H+P|VM0E6xi~zghdWpRB_#$6=(U&YH zx&k>6XY06%N_~#X+C&;BWH{$!xtf-EjF&`$#pB}%4@;0=OG?6#=tJL21{(7F4wrgK z+k3I^hOQRA-RX%_7XVZW#AjGO9dsG%b$Ia{s{5fHG2y^Dbop#?d9RV)ZoSJ*OW@>- z17FWw&U%Ineb4suX9e45%IBbO`j-8mmQcq7)J;h0@BcJQ4gd074};j*A! zkGcp9tRCqRwVb)(>2?|#pU|9huci+8oFtXmxfK~lR(i0@JbEgZ$}4Rjh1rhl_Ds08 zMBRBmB_oMcv(0cz6AeAtq`{5^Tl5Z2t=_WGSKA}7zE+A1TB+`(l(oWKwXu}8pWvI> zT5P%sA4|R*i%eZ|#JJur|E?y6_TB5N=d(|1bK2b2B5=6~Qu|KLRE2F$-OX&Si$f)# zWGV0+MCG(Wg5QmV(Jo3@@+E!=m4jP;rvltNzH%#=4uo_nRyD3XdFB zZa)ww?k#)|Hu>nKEj<;UA(=K<@B58>w2T&3WL%L%{qxtsLbbq)eGV6Hv@q*WOCy?n zpxVXn9@z@c384Q{i1Ee{f*w1N?qIG&|;gJ0|Ksx2j?i6=>N$vdv&~Otl z`aOuyC5wiT6T!h52d1)sLNYMa0-r}nkqxZaW>wUSjzgjD&tq6a9~$UG3G+k3o}pyi z@GLl->NtF6qA!CrEMhdAGe0~>AI`;b|LPeoaOAdAxFsxZJ)K)I&#ma;*5G)_V%&O1 z-VDfVX7RG=yl3;gM?JhQ+(;5Q((5?Fpo|Q%Mi?C=?)*sRNIxGp+D#vsa2z#0%bRA6 zHb{-m&5u@6Mi+2=Nq-+LEB^95{zn#nwS)h8p1<}te;qfrX*l-HaqP#vv2E7aua2?5 P=f^aRfmK-qaQy!OC@BiR literal 0 HcmV?d00001 diff --git a/Manuals/Altibase_7.3/eng/media/SQL/one_table.gif b/Manuals/Altibase_7.3/eng/media/SQL/one_table.gif new file mode 100644 index 0000000000000000000000000000000000000000..4069a1e357d06729889546be9a530021deec2088 GIT binary patch literal 6425 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 literal 0 HcmV?d00001 diff --git a/Manuals/Altibase_7.3/eng/media/SQL/restart_sequence_clause.gif b/Manuals/Altibase_7.3/eng/media/SQL/restart_sequence_clause.gif new file mode 100644 index 0000000000000000000000000000000000000000..2319ec05cf611ea6cdb6f61081405b1d9979b9d1 GIT binary patch literal 3473 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 literal 0 HcmV?d00001 diff --git a/Manuals/Altibase_7.3/eng/media/SQL/restart_sequence_clause.vsd b/Manuals/Altibase_7.3/eng/media/SQL/restart_sequence_clause.vsd new file mode 100644 index 0000000000000000000000000000000000000000..3085cfd5bfb7f54c6b117db396697259450b05c2 GIT binary patch literal 34304 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 Date: Thu, 11 Jan 2024 17:57:26 +0900 Subject: [PATCH 2/3] Update SQL reference --- Manuals/Altibase_7.3/eng/SQL Reference.md | 834 ++++++++---------- .../{limit_clause_.gif => limit_clause.gif} | Bin Manuals/Altibase_7.3/kor/SQL Reference.md | 2 +- 3 files changed, 373 insertions(+), 463 deletions(-) rename Manuals/Altibase_7.3/eng/media/SQL/{limit_clause_.gif => limit_clause.gif} (100%) diff --git a/Manuals/Altibase_7.3/eng/SQL Reference.md b/Manuals/Altibase_7.3/eng/SQL Reference.md index 7754bd551..5114826ec 100644 --- a/Manuals/Altibase_7.3/eng/SQL Reference.md +++ b/Manuals/Altibase_7.3/eng/SQL Reference.md @@ -3051,9 +3051,9 @@ Alter success. ![sync_table_clause](media/SQL/sync_table_clause.gif) -*restart_clause ::=** +**restart_clause ::=** -[![sync_table_clause](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/restart_sequence_clause.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/restart_sequence_clause.gif) +![restart_clause](media/SQL/restart_sequence_clause.gif) #### Prerequisites @@ -3113,14 +3113,16 @@ For detailed more information about sequences, please refer to the description o *restart_clause* -시퀀스를 재시작하기 위한 구문으로 아래 세가지 방법이 있다. +There are three statement to restart the sequence - RESTART - - START VALUE를 INCREMENT VALUE가 1 이상이면 MINVALUE로, INCREMENT VALUE가 -1 이하이면 MAXVALUE로 초기화하고, 시퀀스를 재시작한다. + - This statement initialize START VALUE to specific value by INCREMENT VALUE, and restarts the sequence. + - If INCREMENT VALUE is equal to or greater than 1, START VALUE is set to MINVALUE. + - If INCREMENT VALUE is equal to or less than -1, START VALUE is set to MAXVALUE. - RESTART WITH N - - START VALUE를 N으로 초기화하고, 시퀀스를 재시작한다. + - This statement initializes START VALUE to N, and restarts the sequence. - RESTART START WITH N - - RESTART WITH N 와 동일하게, START VALUE를 N으로 초기화하고 시퀀스를 재시작한다. + - Like RESTART WITH N, this statement initializes START VALUE to N, and restarts the sequence. #### Examples @@ -6017,7 +6019,7 @@ This is used to set the maximum number of records that can be stored in a queue *DELETE [ON|OFF]* -큐 테이블에 DELETE 문 허용 여부를 결정하는 절이다. ON은 큐 테이블에 DELTE 문을 허용한다. OFF는 큐 테이블에 DELETE 문을 허용하지 않는다. 이 경우 DELETE 문을 허용한 경우보다 DEQUEUE 병렬 수행 성능이 향상된다. DELETE 절을 생략하면 DELETE ON으로 큐 테이블을 생성한다. DELETE 문을 허용하지 않는 큐 테이블은 V$QUEUE_DELETE_OFF에서 확인할 수 있다. +This determines if DELETE statement can be applied to the queue table or not. ON allows the DELETE statement on the queue table. OFF does not allow the DELETE statement on the queue table. In this case, when DELETE is not allowed, the DEQUEUE parallel performance improves. If the DELETE clause is omitted, the queue table is created with DELETE ON. Users can find queue tables that do not allow the DELETE statement in V$QUEUE_DELETE_OFF. #### Considerations @@ -6056,7 +6058,7 @@ abc 1 99.999 1 row selected. ``` -<질의> 메시지의 길이가 최대 40이고, DELETE 문을 허용하지 않는 Q3이라는 이름의 큐 테이블을 생성하라. + Create a queue named Q3 that does not allow the DELETE statement, with a maximum message length is 40 bytes. ``` @@ -10581,15 +10583,15 @@ This chapter explains each of the Data Manipulation Language (DML) statements th **tbl_ref ::=** -![tbl_ref](C:/Users/ALTIBASE/Desktop/work/tw/ALTIBASE/Documents/Manuals/Altibase_7.3/kor/media/SQL/tbl_ref.gif) +![tbl_ref](media/SQL/tbl_ref.gif) **one_table ::=** -![one_table](C:/Users/ALTIBASE/Desktop/work/tw/ALTIBASE/Documents/Manuals/Altibase_7.3/kor/media/SQL/one_table.gif) +![one_table](media/SQL/one_table.gif) **join_table ::=** -![join_table](C:/Users/ALTIBASE/Desktop/work/tw/ALTIBASE/Documents/Manuals/Altibase_7.3/kor/media/SQL/join_table.gif) +![join_table](media/SQL/join_table.gif) #### Prerequisites @@ -10651,25 +10653,29 @@ Limitations of the returning clause: *multiple_delete* -The following example deletes records that meet the join condition from the table specified in tbl_name. +This deletes records that meet the join condition from the table specified in tbl_name. Limitations of the multiple delete clause: - limit_clause and returning_clause cannot be used. - dictionary table cannot be used. -- full outer join canno be used. +- full outer join cannot be used. *tbl_ref* +This specifies the table to be applied to multiple_delete. + multiple update 를 하기 위한 table 을 명시한다. *one_table* -한 개의 table이거나 혹은 view 를 명시한다. +This indicates that multiple_delete applies to one table or view. + + 한 개의 table이거나 혹은 view 를 명시한다. *join_table* -table 사이의 join 조건을 명시한다. +This specifies the join conditions between tables. #### HINTS Options @@ -11470,14 +11476,21 @@ The following example shows how Altibase manages data concurrency, integrity, an ![subquery](media/SQL/subquery.gif) -[limit_clause ::=](#limit_clause) +[**limit_clause ::=**](#limit_clause) + +![limit_clause](media/SQL/limit_clause.gif) **select_clause ::=** ![](media/SQL/77d1a3feb68a0257346ff3590901be12.png) -[hierarchical_query_clause ::=](#hierarchical_query_clause), [group_by_clause -::=](#group_by_clause) +[**hierarchical_query_clause ::=**](#hierarchical_query_clause) + +![hierarchical_query_clause](media/SQL/hierarchical_query_clause.gif) + +[**group_by_clause::=**](#group_by_clause) + +![group_by_clause](media/SQL/group_by_clause.gif) **select_list ::=** @@ -11489,7 +11502,9 @@ The following example shows how Altibase manages data concurrency, integrity, an ![](media/SQL/e71b7bc2eebb6dec22a57132da33f80c.png) -[joined_table ::=](#joined_table) +[**joined_table ::=**](#joined_table) + +![joined_table](media/SQL/joined_table.gif) @@ -11623,7 +11638,7 @@ If a SELECT statement contains a GROUP BY clause, then only constants, aggregate If the SELECT list is composed of expressions or constants that do not include columns, the FROM clause can be omitted. -SThe specification of only the asterisk symbol(*) in the SELECT list represents every column of every table and view in the FROM clause. What the asterisk symbol represents does not change, even if it is specified with a column or expression. +The specification of only the asterisk symbol(*) in the SELECT list represents every column of every table and view in the FROM clause. What the asterisk symbol represents does not change, even if it is specified with a column or expression. *FROM Clause* @@ -13448,7 +13463,9 @@ C1 C2 ![update_image229](media/SQL/update_image229.gif) -[returning_clause ::=](#returning_clause) +[**returning_clause ::=**](#returning_clause) + +![returning_clause](media/SQL/returning_clause.gif) **set_clause_list ::=** @@ -13464,21 +13481,21 @@ C1 C2 ![limit_clause_](media/SQL/limit_clause_.gif) -[**multiple_update ::=**](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/SQL Reference.md#multiple_update) +[**multiple_update ::=**](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/eng/SQL Reference.md#multiple_update) -[![multiple_update](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/multiple_update.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/multiple_update.gif) +![multiple_update](media/SQL/multiple_update.gif) **tbl_ref ::=** -[![multiple_update2](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/tbl_ref.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/tbl_ref.gif) +![tbl_ref](media/SQL/tbl_ref.gif) **one_table ::=** -[![multiple_update3](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/one_table.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/one_table.gif) +![one_table](media/SQL/one_table.gif) **join_table ::=** -[![multiple_update4](https://github.com/ALTIBASE/Documents/raw/master/Manuals/Altibase_7.3/kor/media/SQL/join_table.gif)](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/media/SQL/join_table.gif) +![join_table](media/SQL/join_table.gif) #### Prerequisites @@ -13529,25 +13546,25 @@ Please refer to the returning_clause of the DELETE statement. *multiple_update* -join 조건을 만족하는 레코드를 찾아 명시한 컬럼들의 값을 변경하는 구문이다. +This finds records that meet the join conditions and updates that specified columns. -multiple update 제약 사항: +Limitations of the multiple update clause: -- limit_clause 와 returning_clause 를 사용할 수 없다. -- dictionary table 을 사용할 수 없다. -- full outer join 을 사용할 수 없다. +- limit_clause and returning_clause cannot be used. +- dictionary table cannot be used. +- full outer join cannot be used. *tbl_ref* -multiple update 를 하기 위한 table 을 명시한다. +This specifies tables to be applied to multiple_update. *one_table* -한 개의 table이거나 혹은 view 를 명시한다. +This indicates that multiple_update applies to one table or view. *join_table* -table 사이의 join 조건을 명시한다. +This specifies the join conditions between tables. #### HINTS Options @@ -23362,29 +23379,29 @@ Appendix A. Regular Expressions This section explains the regular expressions supported by Altibase. -이 장에서 사용한 샘플 스키마는 $ALTIBASE_HOME/sample/APRE/schema/schema.sql을 이용했다. +All examples in this section are based on the sample schema $ALTIBASE_HOME/sample/APRE/schema/schema.sql. ### Regular Expression -Regular expressions are a syntax convention for writing text patterns and consist of one or more character strings and metacharacters. Altibase partly supports POSIX Basic Regular Expression (BRE) and Extended Regular Expression (ERE). PCRE2 호환 모드는 PCRE2 라이브러리의 정규 표현식 문법을 지원한다. +Regular expressions are a syntax convention for writing text patterns and consist of one or more character strings and metacharacters. Altibase partly supports POSIX Basic Regular Expression (BRE) and Extended Regular Expression (ERE). PCRE2 compatibility mode supports the regular expression syntax fo the PCRE2 library. -정규 표현식 문법이나 기능은 구현체마다 세부 구현이 다르다. DBMS 벤더마다 도입한 정규 표현식 라이브러리나 정규 표현식 라이브러리 버전이 각각 달라서 Altibase에서 지원하는 정규 표현식 문법과 기능이 타 DBMS와 차이가 있을 수 있다. +Regular expression syntax and functionality may vary in detail by DBMS. Different DBMS use different regular expression libraries or versions, leading to potential differences in the supported syntax and features between Altibase and other DBMS. -Altibase SQL에서 정규 표현식은 아래의 문자 함수나 연산자와 함께 사용할 수 있다. +In Altibase SQL, regular expressions can be used in conjunction with the following string functions or operators: - REGEXP_COUNT - REGEXP_REPLACE - REGEXP_INSTR - REGEXP_SUBSTR -- REGEXP_LIKE 조건 연산자 +- REGEXP_LIKE Condition Operator -### 정규 표현식 모드 설정 방법 +### How to Set the Regular Expression Mode -사용자는 Altibase 정규 표현식 모드와 PCRE2 호환 모드, 두 가지 정규 표현식 모드 중 하나를 선택해서 사용해야 한다. Altibase 정규 표현식 모드가 기본으로 설정되어 있으므로 PCRE2 호환 모드를 사용하고 싶다면 다음 구문으로 정규 표현식 모드를 변경해야 한다. +Users can choose one option between Altibase regular expression mode and PCRE2 compatibility mode. The default setting is Altibase regular expression mode. Thus, users who want to use PCRE2 compatibility mode should change the regular expression mode with the statements below: -> ###### 시스템 단위 변경 +> ###### Change at the System Level -Altibase 서버가 구동된 상태에서 시스템 프로퍼티를 변경하는 구문으로 정규 표현식 모드를 변경하는 방법이다. 변경한 설정을 적용하려면 세션을 재접속해야 한다. +The following statement changes the system property while the Altibase server is running. To apply the modified settings, reconnect the session. ``` ALTER SYSTEM SET REGEXP_MODE=1; @@ -23392,9 +23409,9 @@ ALTER SYSTEM SET REGEXP_MODE=1; -> ###### 세션 단위 변경 +> ###### Change at the Session Level -Altibase 서버가 구동된 상태에서 세션의 속성을 변경하는 구문으로 정규 표현식 모드를 변경하는 방법이다. +The following statement changes the session property while the Altibase server is running. ``` ALTER SESSION SET REGEXP_MODE=1; @@ -23402,22 +23419,22 @@ ALTER SESSION SET REGEXP_MODE=1; -> ###### Altibase 서버에 영구적으로 변경 +> ###### Change the Regular Expression Mode on the Altibase Server Permanently -변경한 정규 표현식 모드를 영구적으로 Altibase 서버에 적용하는 방법이다. Altibase 서버 프로퍼티 파일에 REGEXP_MODE=1을 추가하고 Altibase 서버를 재시작한다. +The following statement applies the changed regular expression mode permanently on the Altibase server. This statement adds "REGEXP_MODE=1" in the Altibase server property file and restarts the server. ``` $ vi $ALTIBASE_HOME/conf/altibase.properties REGEXP_MODE=1 ``` -### Altibase 정규 표현식 모드 +### Altibase Regular Expression Mode -Altibase의 정규 표현식 모드 중 Altibase 정규 표현식 모드에 대해 살펴보자. +This section explains the Altibase regular expression mode. -#### 특징 +#### Features -Altibase 정규 표현식 모드는 Altibase의 기본 설정 모드이다. POSIX 기본 정규 표현식과 확장 정규 표현식의 문법을 일부 지원하며 최소한의 정규 표현식 문법을 지원한다. +The Altibase regular expression mode is the default setting for Altibase. It partially supports the syntax of POSIX basic regular expressions and extended regular expressions, and minimal regular expression syntax. Regular expressions supported by Altibase have the following limitations and features. @@ -23427,13 +23444,13 @@ Regular expressions supported by Altibase have the following limitations and fea - Conditional regular expressions (e.g., condition)B|C) are unsupported. - The escape character is supported. -#### 정규 표현식 문법 +#### Regular Expression Syntax -다음은 Altibase 정규 표현식 모드의 정규 표현식 문법에 대한 설명이다. +This section describes the regular expression syntax of Altibase regular expression mode. -##### 문자 클래스 +##### Character Class -문자 클래스는 자주 사용하는 문자 집합들을 정의한 것이다. 문자 클래스는 이스케이프 스퀀스로 표현하거나 대괄호로 둘러싸인 POSIX 표기법을 사용할 수도 있다. +Character Class defines the set of characters frequently used. Users can represent this class in an escape sequence or POSIX standard enclosed in square brackets. The following table describes character classes. @@ -23464,222 +23481,109 @@ The following table describes character classes. The following table describes metacharacters that can be used for regular expressions in Altibase, and their meanings. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Metacharacter

-
-

Description

-
-

.

-
-

Matches a single character, other than the newline. The punctuation character(.) of a regular expression enclosed in square brackets matches the literal -dot. For example, a.c matches “abc”, but [a.c] matches only “a”, “.”, or “c”.

-
-

\

-
-

뒤에 오는 메타 문자를 보통 문자로 취급한다

-
-

[]

-
-

A character class expression. Matches a single character enclosed in square -brackets. For example, [abc] matches “a”, “b”, or “c”; [a-z] matches any alphabetic character in lowercase, from “a” to “z”. The format can also be -mixed: both [a-cx-z] and [abcx-z] match “a”, “b”, “c”, “x”, “y”, or “z”. -If the right square bracket (]) is the initial character to follow a circumflex (^), -it can be included in the expression enclosed in square brackets: []abc].

-

] If the circumflex (^) is the initial character enclosed in square brackets ([]), it -matches any character other than those enclosed in the square brackets ([]). For -example, [^abc]d matches “ed”, “fd”, but not “ad”, “bd” and “cd”. [^a-z] -matches any character that does not start with an alphabetic character in lowercase.

-
-

^

-
-

Matches the beginning character of a string.

-
-

$

-
-

Matches the last character of a string or the preceding character of the last -newline of a string.

-
-

*

-
-

Matches the preceding element for 0 or more times. For example, ab*c matches "ac", "abc", "abbbc", etc.; [xyz]* matches "", "x", "y", "z", "zx", "zyx", -"xyzzy", etc.; (ab)* matches "", "ab", "abab", "ababab", etc.

-
-

+

-
-

Matches the preceding character for 1 or more times.

-
-

?

-
-

Matches the preceding character for 0 or 1 time.

-
-

{m,n}

-
-

Matches the preceding element for a minimum of m, and a maximum of n -times. For example a{3,5} matches "aaa", "aaaa", and "aaaaa".

-
-

{m}

-
-

Matches the preceding element for m times.

-
-

{m,}

-
-

Matches the preceding element for m or more times.

-
-

|

-
-

Matches a single expression among multiple expressions.

-
-

()

-
-

Matches a subexpression. Multiple expressions can be grouped as a single -complex regular expression.

-
- -##### 공백 문자 +| Metacharacter | Action | +| ------------- | ------------------------------------------------------------ | +| . | Match a single character, except the newline. The punctuation character(.) of a regular expression enclosed in square brackets matches the literal dot.
For example, a.c matches “abc”, but [a.c] matches only “a”, “.”, or “c”. | +| \ | Use the literal meaning of the following metacharacter. | +| [] | A character class expression.
Match a single character enclosed in square brackets.
For example, [abc] matches “a”, “b”, or “c”; [a-z] matches any alphabetic character in lowercase, from “a” to “z”.
The format can also be mixed; both [a-cx-z] and [abcx-z] match “a”, “b”, “c”, “x”, “y”, or “z”.
If the right square bracket (]) is the initial character to follow a circumflex (^), it can be included in the expression enclosed in square brackets; []abc].
If the circumflex (^) is the initial character enclosed in square brackets ([]), it matches any character except those enclosed in the square brackets ([]).
For example, [ ^abc ]d matches “ed”, “fd”, but not “ad”, “bd” and “cd”. [ ^a-z ] matches any character that does not start with an alphabetic character in lowercase. | +| ^ | Match the beginning character of a string. | +| $ | Match the last character of a string or the preceding character of the last newline of a string | +| * | Match the preceding element for zero, one, or more times.
For example, ab\*c matches "ac", "abc", "abbbc", etc.
[xyz]* matches "", "x", "y", "z", "zx", "zyx", "xyzzy", etc.
(ab)* matches "", "ab", "abab", "ababab", etc. | +| + | Match the preceding character for 1 or more times. | +| ? | Match the preceding character for 0 or 1 time. | +| {m,n} | Matches the preceding element for a minimum of m, and a maximum of n times.
For example, a{3,5} matches "aaa", "aaaa", and "aaaaa". | +| {m} | Match the preceding element for m times. | +| {m,} | Match the preceding element for m or more times. | +| \| | Match a single expression among multiple expressions. | +| () | Match a subexpression. Multiple expressions can be grouped as a single complex regular expression. | -다음은 정규 표현식에서 탭이나 줄바꿈과 같은 눈에 보이지 않는 문자를 검색할 때 사용하는 이스케이프 시퀀스(escape sequence)이다. -| 이스케이프 시퀀스 | 의미 | -| ----------------- | ---------------------------- | -| \t | 탭(tab) | -| \n | 줄바꿈(line feed) | -| \r | 캐리지 리턴(carriage return) | -| \f | 다음 페이지(form feed) | +##### Escape Sequence +Users can search for invisible characters such as tab or line feed using an escape sequence. +| Escape Sequence | Description | +| --------------- | --------------- | +| \t | tab | +| \n | line feed | +| \r | carriage return | +| \f | form feed | -### PCRE2 호환 모드 -Altibase의 정규 표현식 모드 중 PCRE2 호환 모드에 대해 살펴보자. -PCRE2 호환 모드는 PCRE2 라이브러리의 정규 표현식 문법을 지원한다. 사용된 PCRE2 라이브러리의 버전은 10.40이다. +### PCRE2 Compatibility Mode -#### 특징 +This section describes the PCRE2 compatibility mode. -먼저, PCRE2 호환 모드는 아래와 같은 특징과 제약 사항이 있다. +PCRE2 compatibility mode supports the regular expression syntax of the PCRE2 library, which version is 10.40. -- Altibase 서버 캐릭터셋이 US7ASCII 또는 UTF-8일 때 사용할 수 있다. -- 한글 검색이 가능하다. -- 역참조, 전방 탐색, 후방 탐색 그리고 조건부 정규 표현식을 지원한다. -- Altibase 정규 표현식 모드와 PCRE2 호환 모드의 정규 표현식 문법은 일부 차이가 있다. 따라서, PCRE2 호환 모드로 설정하면 Altibase 정규 표현식 모드에서 지원하는 문법을 사용할 수 없거나 같은 정규 표현식 문법을 사용하더라도 질의문의 결과가 달라질 수 있다. 대표적인 차이점은 하단의 [정규 표현식 모드 별 문법 차이점](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/SQL Reference.md#정규-표현식-모드-별-문법-차이점)을 참고한다. +#### Features -#### 정규 표현식 문법 +PCRE2 Compatibility mode has the features and constraints as below. -PCR2E 호환 모드에서 사용할 수 있는 대표적인 정규 표현식 문법에 대해 알아보자. 본 매뉴얼에서 다루지 않은 PCRE2 라이브러리의 정규 표현식 문법은 [PCRE2 패턴 매뉴얼 페이지](https://www.pcre.org/current/doc/html/pcre2pattern.html)를 참고하기 바란다. +- Altibase server character-set should be set to US7ASCII or UTF-8. +- Korean searching is available. +- Backreference, positive lookahead, negative lookahead, and conditional regular expressions are available. +- The regular expression syntax differs between Altibase regular expression mode and PCRE2 compatibility mode. Therefore, when setting it to PCRE2 compatibility mode, certain syntax supported in Altibase regular expression mode may not be available, or even when using the same regular expression syntax, query results may be different. For notable differences, please refer to the [Syntax Differences between Regular Expression Modes](#Syntax-Differences-between-Regular-Expression-Modes) -##### 메타 문자 +#### Regular Expression Syntax -메타 문자는 정규 표현식에서 사용하는 특별한 의미를 가지는 기호이다. PCRE2 호환 모드에서 메타 문자는 대괄호 안을 제외한 어느 곳에서나 인식되는 메타 문자와 대괄호 안에서 사용되는 메타 문자가 있다. +This section describes the notable regular expression syntax for PCRE2 compatibility mode. For regular expression syntax not covered in this manual, please refer to the [PCRE2 Pattern Manual](https://www.pcre.org/current/doc/html/pcre2pattern.html). -> ###### 대괄호 밖에서의 메타 문자 +##### Metacharacters -| 메타 문자 | 의미 | -| --------- | --------------------------------------- | -| \ | 여러 용도로 사용되는 이스케이프 문자 | -| ^ | 문자열(또는 여러 줄 모드에서 줄)의 시작 | -| $ | 문자열(또는 여러 줄 모드에서 줄)의 끝 | -| . | 줄바꿈 문자를 제외한 모든 문자와 일치 | -| [ | 문자 클래스 정의 시작 | -| \| | 여러 식 중 하나를 선택 | -| ( | 그룹 또는 제어 동사 시작 | -| ) | 그룹 또는 제어 동사 끝 | -| * | 0회 이상 일치하는 문자 | -| + | 1회 이상 일치하는 문자 | -| ? | 0 또는 1회 일치하는 문자 | -| { | 최소/최대값 | +Each metacharacter has its own meaning when it is used in regular expression. Some metacharacters change their meaning depending on whether they are used inside or outside square brackets. -> ###### 대괄호 안에서의 메타 문자 +> ###### Metacharacters outside square brackets -| 메타 문자 | 의미 | -| --------- | ------------------------------------------------------- | -| \ | 뒤의 문자를 일반 문자로 인식 | -| ^ | ^ 바로 뒤 문자나 범위 또는 집합 안의 문자나 범위를 제외 | -| - | 문자 범위 | -| [ | 문자 클래스 시작 | -| ] | 문자 클래스의 종료 | +| Metacharacter | Action | +| ------------- | ------------------------------------------------------------ | +| \ | Escape character for various purposes. | +| ^ | The beginning character of a string or a line in multi-line mode. | +| $ | The end character of a string or a line in multi-line mode. | +| . | Match any single character, except a newline character. | +| [ | Begin of character class definition. | +| \| | Select one expression among several expressions. | +| ( | Start grouping or control verbs. | +| ) | End grouping or control verbs. | +| * | Match zero, one, or many of the preceding expression. | +| + | Match one, or many of the preceding expression. | +| ? | Match zero or one of the preceding expression. | +| { | Minimum/maximum value | + +> ###### Metacharacters inside square brackets + +| Metacharacter | Action | +| ------------- | ------------------------------------------------------------ | +| \ | Use the literal meaning of the following metacharacter. | +| ^ | Exclude a character, range, characters or range in a set following ^ immediately. | +| - | Character range. | +| [ | Begin of character class. | +| ] | End of character class. | -##### 출력할 수 없는 문자 +##### Escape Sequence -다음은 출력할 수 없는 문자를 의미하는 이스케이프 시퀀스를 정리한 표이다. +The following table describes escape sequences, specifically unprintable. -| 이스케이프 시퀀스 | 의미 | -| ----------------- | ------------------------------------------------------------ | -| \a | 경고음 문자 | -| \c*x* | control-*x* 문자. *x*는 출력 가능한 아스키 문자가 올 수 있다. | -| \e | ESC 문자(escape). 아스키 코드의 27번째 문자(hex 1B) | -| \f | 다음 페이지(form feed). 아스키 코드의 12번째 문자(hex 0C) | -| \n | 줄바꿈 문자(line feed). 아스키 코드의 10번째 문자(hex 0A) | -| \r | 캐리지 리턴(carriage return). 아스키 코드의 13번째 문자(hex 0D) | -| \t | 탭(tab). 아스키 코드의 9번째 문자(hex 09) | -| \0*dd* | 아스키 코드의 8진수 코드 *dd*에 해당하는 문자. 예를 들어 \061은 숫자 1을 의미한다. | -| \*ddd* | 아스키 코드의 8진수 코드 *ddd*에 해당하는 문자 또는 역참조를 의미한다. | -| \o{*ddd..*} | 아스키 코드의 8진수 코드 *ddd...* 에 해당하는 문자 | -| \x*hh* | 아스키 코드의 16진수 코드 *hh*에 해당하는 문자. 예를 들어 \x31은 숫자 1을 의미한다. | -| \x{*hhh..*} | 아스키 코드의 16진수 코드 *hhh...* 에 해당하는 문자 | -| \N{U+*hhh..*} | 유니코드 16진수 코드 *hhh..* 값에 해당하는 문자 | +| Escape Sequence | Description | +| --------------- | ------------------------------------------------------------ | +| \a | Alert character. | +| \c*x* | control-*x* Character. *x* is a printable ASCII character. | +| \e | ESC(escape). The 27th character in ASCII code(hex 1B) | +| \f | Form feed. The 12th character in ASCII code(hex 0C) | +| \n | Line feed. The 10th character in ASCII code(hex 0A) | +| \r | Carriage return. The 13th character in ASCII code(hex 0D) | +| \t | Tab. The 9th character in ASCII code(hex 09) | +| \0*dd* | The character corresponding to the octal code *dd* in ASCII. For example, \061 means the number '1'. | +| \*ddd* | The character or backreference corresponding to the octal code *ddd* in ASCII. | +| \o{*ddd..*} | The character corresponding to the octal code *ddd...* in ASCII. | +| \x*hh* | The character corresponding to the hexadecimal code *hh* in ASCII. For example, \x31 means the number '1'. | +| \x{*hhh..*} | The character corresponding to the hexadecimal code *hhh...* in ASCII. | +| \N{U+*hhh..*} | The character corresponding to the hexadecimal code *hhh...* in Unicode. | -**예제** +**Example** -<질의> 이스케이프 시퀀스를 사용하여 아스키 코드 16진수 31에 해당하는 숫자 1을 포함하는 문자열을 검색한다. + Using escape sequence, search for strings that include 1 corresponding to the hexadecimal code 31 in ASCII. ``` iSQL> SELECT GNAME FROM GOODS WHERE REGEXP_LIKE(GNAME, '\x31'); @@ -23698,31 +23602,31 @@ AU-100 -##### 일반 문자 유형 +##### General Character Type -다음은 자주 사용하는 일반 문자 집합들을 의미하는 이스케이프 시퀀스를 정리한 표이다. +The following table describes escape sequences that indicate frequently used general character set. -| 이스케이프 시퀀스 | 의미 | -| ----------------- | -------------------------------------------- | -| \d | 10진수 숫자 | -| \D | 10진수 숫자가 아닌 문자 | -| \h | 수평 공백 문자, 예를 들어 스페이스와 탭 문자 | -| \H | 수평 공백 문자가 아닌 문자 | -| \N | 줄바꿈 문자가 아닌 문자 | -| \p{*xx*} | *xx* 속성을 가진 유니코드 문자 | -| \P{*xx*} | *xx* 속성이 없는 유니코드 문자 | -| \R | 줄바꿈 문자 | -| \s | 공백 문자 | -| \S | 공백 문자가 아닌 문자 | -| \v | 수직 공백 문자, 예를 들어 줄바꿈 문자 | -| \V | 수직 공백 문자가 아닌 문자 | -| \w | 단어(word) 문자 | -| \W | 단어(word) 문자가 아닌 문자 | -| \X | 유니코드 확장 문자소 클러스터 | +| Escape Squence | Description | +| -------------- | ------------------------------------------------------ | +| \d | decimal number. | +| \D | Any character not decimal number. | +| \h | Horizontal whitespace character(i.e. space(" "), tab). | +| \H | Any character not horizontal whitespace character. | +| \N | Any character not newline character. | +| \p{*xx*} | Unicode character which has *xx* property . | +| \P{*xx*} | Unicode character which does not have *xx* property. | +| \R | Newline character. | +| \s | Whitespace character. | +| \S | Any character not whitespace character | +| \v | Vertical whitespace character(i.e. newline). | +| \V | Any character not vertical whitespace character. | +| \w | Word character. | +| \W | Any character not word character. | +| \X | Unicode extended grapheme cluster. | -> ###### 유니코드 문자 속성 +> ###### Unicode Character Property -\p{*xx*}와 \P{*xx*}에서 사용 가능한 유니코드에서 일반 범주로 분류된 문자 속성을 나타내는 표이다. *xx*로 표시되는 속성은 대소문자를 구분하며 중괄호("{}")는 선택 사항으로 아래의 두 예제는 같은 속성을 의미한다. +The following table describes the character properties categorized as general, which can be used in \p{*xx*} and \P{*xx*}. The properties represented by *xx* are case-sensitive, and curly braces("{}") are optional. The following two examples denote the same property. ``` \p{L} @@ -23731,61 +23635,61 @@ AU-100 -| 속성 | 의미 | -| ---- | ------------------------------------------------------------ | -| C | 기타(Other). C로 시작하는 속성을 모두 포함한다. | -| Cc | 제어(Control) | -| Cf | 형식(Format) | -| Cn | 미할당(Unassigned) | -| Co | 내부 용도(Private use) | -| | | -| L | 문자(Letter). L로 시작하는 속성을 모두 포함한다. | -| Ll | 영문자 소문자(Lower case letter) | -| Lm | 수정자(Modifier letter) | -| Lo | 기타 문자(Other letter) | -| Lt | 첫 글자가 영문자 대문자인 문자(Title case letter) | -| Lu | 영문자 대문자(Upper case letter) | -| L& | 영문자 소문자, 대문자 또는 첫 글자가 대문자인 문자(Ll, Lu, or Lt) | -| | | -| M | 표시(Mark). M으로 시작하는 속성을 모두 포함한다. | -| Mc | 띄어쓰기 표시(Spacing mark) | -| Me | 둘러싸는 표시(Enclosing mark) | -| Mn | 비공백 표시(Non-spacing mark) | -| | | -| N | 숫자(Number). N으로 시작하는 속성을 모두 포함한다. | -| Nd | 10진수(Decimal number) | -| Nl | 문자로 표현하는 숫자(Letter number) | -| No | 기타 숫자(Other number) | -| | | -| P | 문장 부호, 구두법(Punctuation). P로 시작하는 속성을 모두 포함한다. | -| Pc | 연결 문장 부호(Connector punctuation) | -| Pd | 대시 또는 하이픈 문장 부호(Dash punctuation) | -| Pe | 종결 문장 부호. 닫힌, 엄격한 구두법(Close punctuation) | -| Pf | 종결 문장 부호(Final punctuation) | -| Pi | 시작 문장 부호(Initial punctuation) | -| Po | 기타 구두(Other punctuation) | -| Ps | 시작 문장 부호. 열린 구두법(Open punctuation) | -| | | -| S | 기호(Symbol). S로 시작하는 속성을 모두 포함한다. | -| Sc | 화폐 기호(Currency symbol) | -| Sk | 수정자 기호(Modifier symbol) | -| Sm | 수학 기호(Mathematical symbol) | -| So | 기타 기호(Other symbol) | -| | | -| Z | 구분자(Separator). Z로 시작하는 속성을 모두 포함한다. | -| Zl | 행 구분자(Line separator) | -| Zp | 단락 구분자(Paragraph separator) | -| Zs | 공백 구분자(Space separator) | -| | | -| Xan | 알파벳과 숫자. L 속성과 N 속성을 모두 포함한다. Alphanumeric: union of properties L and N | -| Xps | POSIX 공백 문자: Z 속성 또는 탭, 줄바꿈 문자, 수직 탭, 다음 페이지, 캐리지 리턴 POSIX space: property Z or tab, NL, VT, FF, CR | -| Xsp | Perl 공백 문자: Z 속성 또는 탭, 줄바꿈 문자, 수직 탭, 다음 페이지, 캐리지 리턴 Perl space: property Z or tab, NL, VT, FF, CR | -| Xuc | 유니버설 문자 이름 Univerally-named character: one that can be represented by a Universal Character Name) | -| Xwd | Perl 단어: 속성 Xan 또는 밑줄 Perl word: property Xan or underscore | - -**예제** - -<질의> 이스케이프 시퀀스 \p를 사용하여 EMPLOYEES 테이블의 EMP_JOB 컬럼에서 영문자 소문자와 일치하는 유니코드 문자가 포함된 데이터를 조회한다. +| Property | Description | +| -------- | ------------------------------------------------------------ | +| C | Other: This includes all properties starting with C. | +| Cc | Control | +| Cf | Format | +| Cn | Unassigned | +| Co | Private use | +| | | +| L | Letter: This includes all properties starting with L. | +| Ll | Lower case letter | +| Lm | Modifier letter | +| Lo | Other letter | +| Lt | Title case letter | +| Lu | Upper case letter | +| L& | Lower case letter, upper case letter, or title case letter(Ll, Lu, or Lt) | +| | | +| M | Mark: This includes all properties starting with M. | +| Mc | Spacing mark | +| Me | Enclosing mark | +| Mn | Non-spacing mark | +| | | +| N | Number: This includes all properties starting with N. | +| Nd | Decimal number | +| Nl | Letter number | +| No | Other number | +| | | +| P | Punctuation: This includes all properties starting with P. | +| Pc | Connector punctuation | +| Pd | Dash punctuation | +| Pe | Close punctuation | +| Pf | Final punctuation | +| Pi | Initial punctuation | +| Po | Other punctuation | +| Ps | Open punctuation | +| | | +| S | Symbol: This includes all properties starting with S. | +| Sc | Currency symbol | +| Sk | Modifier symbol | +| Sm | Mathematical symbol | +| So | Other symbol | +| | | +| Z | Separator: This includes all properties starting with Z. | +| Zl | Line separator | +| Zp | Paragraph separator | +| Zs | Space separator | +| | | +| Xan | Alphanumeric: the union of properties L and N | +| Xps | POSIX space: property Z or tab, NL, VT, FF, CR | +| Xsp | Perl space: property Z or tab, NL, VT, FF, CR | +| Xuc | Universally-named character: one that can be represented by a Universal Character Name | +| Xwd | Perl word: property Xan or underscore | + +**Example** + + Using escape sequence '\p', search for EMP_JOB column data which includes the lowercase Unicode characters from the EMPLOYEES table. ``` iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, '\p{Ll}'); @@ -23799,9 +23703,9 @@ planner -> ###### 유니코드 스크립트 이름 +> ###### Unicode Script Name -\p{*xx*}와 \P{*xx*}의 *xx* 속성에 다음과 같이 유니코드 스크립트 이름을 사용할 수도 있다. +Unicode script name is available to be used as the property of \p{*xx*} and \P{*xx*} as below. ``` \p{Greek} @@ -23810,7 +23714,7 @@ planner -지원하는 스크립트 목록은 아래와 같다. +This is a list of supported scripts: ``` Adlam, Ahom, Anatolian_Hieroglyphs, Arabic, Armenian, Avestan, Balinese, Bamum, Bassa_Vah, Batak, Bengali, Bhaiksuki, Bopomofo, Brahmi, Braille, Buginese, Buhid, Canadian_Aboriginal, Carian, Caucasian_Albanian, Chakma, Cham, Cherokee, Chorasmian, Common, Coptic, Cuneiform, Cypriot, Cypro_Minoan, Cyrillic, Deseret, Devanagari, Dives_Akuru, Dogra, Duployan, Egyptian_Hieroglyphs, Elbasan, Elymaic, Ethiopic, Georgian, Glagolitic, Gothic, Grantha, Greek, Gujarati, Gunjala_Gondi, Gurmukhi, Han, Hangul, Hanifi_Rohingya, Hanunoo, Hatran, Hebrew, Hiragana, Imperial_Aramaic, Inherited, Inscriptional_Pahlavi, Inscriptional_Parthian, Javanese, Kaithi, Kannada, Katakana, Kayah_Li, Kharoshthi, Khitan_Small_Script, Khmer, Khojki, Khudawadi, Lao, Latin, Lepcha, Limbu, Linear_A, Linear_B, Lisu, Lycian, Lydian, Mahajani, Makasar, Malayalam, Mandaic, Manichaean, Marchen, Masaram_Gondi, Medefaidrin, Meetei_Mayek, Mende_Kikakui, Meroitic_Cursive, Meroitic_Hieroglyphs, Miao, Modi, Mongolian, Mro, Multani, Myanmar, Nabataean, Nandinagari, New_Tai_Lue, Newa, Nko, Nushu, Nyakeng_Puachue_Hmong, Ogham, Ol_Chiki, Old_Hungarian, Old_Italic, Old_North_Arabian, Old_Permic, Old_Persian, Old_Sogdian, Old_South_Arabian, Old_Turkic, Old_Uyghur, Oriya, Osage, Osmanya, Pahawh_Hmong, Palmyrene, Pau_Cin_Hau, Phags_Pa, Phoenician, Psalter_Pahlavi, Rejang, Runic, Samaritan, Saurashtra, Sharada, Shavian, Siddham, SignWriting, Sinhala, Sogdian, Sora_Sompeng, Soyombo, Sundanese, Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai_Le, Tai_Tham, Tai_Viet, Takri, Tamil, Tangsa, Tangut, Telugu, Thaana, Thai, Tibetan, Tifinagh, Tirhuta, Toto, Ugaritic, Vai, Vithkuqi, Wancho, Warang_Citi, Yezidi, Yi, Zanabazar_Square @@ -23818,36 +23722,38 @@ Adlam, Ahom, Anatolian_Hieroglyphs, Arabic, Armenian, Avestan, Balinese, Bamum, -> ###### 유니코드 확장 문자소 클러스터 +> ###### Unicode Extended Grapheme Cluster + +\X escape sequence indicates Unicode extended grapheme cluster. 'Grapheme cluster' is a single character, readable for humans. One grapheme cluster is comprised of several code points. -\X 이스케이프 시퀀스는 유니코드 확장 문자소 클러스터(Unicode extended grapheme cluster)를 의미한다. 자소 집합(grapheme cluster)은 사람이 읽을 수 있는 단일 문자를 말하며 하나의 자소 집합은 여러 개의 코드 포인트(code points)로 이루어진다. +확장 문자소 클러스터로 구성된 유니코드 캐릭터들과 매치된다. -확장 문자소 클러스터로 구성된 유니코드 캐릭터들과 매치된다. 확장 문자소에 대한 자세한 정보는 [유니코드 공식 문서 UAX #29: Unicode Text Segmentation](http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)를 참고하기 바란다. 확장 문자소 매칭에 대한 자세한 정보는 [PCRE2 패턴 매뉴얼 페이지](https://www.pcre.org/current/doc/html/pcre2pattern.html)를 참고하기 바란다. +For detailed information on extended grapheme clusters, refer to the [Unicode Official Document UAX #29: Unicode Text Segmentation](http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries). For detailed information on extended grapheme cluster matching, refer to the [PCRE2 Pattern Manual Page](https://www.pcre.org/current/doc/html/pcre2pattern.html). -##### POSIX 문자 클래스 +##### POSIX Character Class -문자 클래스는 자주 사용하는 문자 집합들을 정의한 것이다. 문자 클래스는 [일반 문자 유형](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/SQL Reference.md#일반-문자-유형)처럼 이스케이프 시퀀스로 표현하거나 아래 표와 같이 대괄호로 둘러싸인 POSIX 표기법을 사용할 수도 있다. POSIX 문자 클래스는 "[:" 와 ":]"로 둘러싸여 있다. 바깥쪽 대괄호는 문자 집합을 정의하는 것이고 안쪽 대괄호는 POSIX 문자 클래스 문법 자체를 의미한다. +Character class defines the set of characters frequently used. Users can represent this class in an escape sequence like [general character type](#General-Charater-Type), or POSIX standard enclosed in square brackets. POSIX character class is enclosed "[:" and ":]". Outer square brackets define the character set, and inner square brackets indicate POSIX character class syntax. -| POSIX 문자 클래스 | 의미 | -| ----------------- | ------------------------------------------------------------ | -| [[:alnum:]] | 알파벳과 숫자 | -| [[:alpha:]] | 알파벳 문자 | -| [[:ascii:]] | 아스키 코드에서 0번부터 127번까지의 문자 | -| [[:blank:]] | 스페이스나 탭 | -| [[:cntrl:]] | 아스키 코드에서 127번 문자와 31번 이하의 문자 | -| [[:digit:]] | 숫자 | -| [[:graph:]] | 아스키 코드에서 출력할 수 있는 문자 32 ~ 126 중, 공백 문자(32)를 제외한 문자 | -| [[:lower:]] | 알파벳 소문자 | -| [[:print:]] | 아스키 코드에서 출력할 수 있는 문자 32 ~ 126 | -| [[:punct:]] | 아스키 코드에서 출력할 수 있는 문자 32 ~ 126 중, 공백 문자, 숫자, 알파벳을 제외한 문자 | -| [[:space:]] | 출력되지 않는 공백 문자(space, carriage return, newline, vertical tab, form feed) 등 | -| [[:upper:]] | 알파벳 대문자 | -| [[:word:]] | 알파벳, 숫자, _ | -| [[:xdigit:]] | 16진수 숫자, 0-9, a-f, A-F | +| POSIX Character Cleass | Description | +| ---------------------- | ------------------------------------------------------------ | +| [[:alnum:]] | Alphabet and number | +| [[:alpha:]] | Alphabet characters | +| [[:ascii:]] | Characters corresponding to 0 to 127 ASCII code | +| [[:blank:]] | Space or tab | +| [[:cntrl:]] | Characters corresponding to 127, 31, and less than 31 ASCII code | +| [[:digit:]] | Numbers | +| [[:graph:]] | 32 to 126 ASCII code, which is printable, except whitespace character(32 ASCII code) | +| [[:lower:]] | Lowercase alphabet | +| [[:print:]] | 32 to 126 ASCII code, which is printable | +| [[:punct:]] | 32 to 126 ASCII code, which is printable, except whitespace, number, and alphabet | +| [[:space:]] | Unprintable whitespace character(i.e. space, carriage return, newline, vertical tab, form feed) | +| [[:upper:]] | Uppercase alphabet | +| [[:word:]] | Alphabet, number, _ | +| [[:xdigit:]] | hexadecimal numbers, 0-9, a-f, A-F | -**예제** +**Example** -<질의> POSIX 문자 클래스를 사용하여 EMPLOYEES 테이블의 EMP_JOB 컬럼에서 영문자 대문자가 포함된 데이터를 조회하라. + Using the POSIX character class, search for EMP_JOB column data which includes uppercase letters from the EMPLOYEES table. ``` iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, '[[:upper:]]'); @@ -23864,22 +23770,22 @@ PM -##### 간단한 어설션 +##### Simple Assertions -어설션(assertions)은 어떤 문자 또는 문자열의 앞과 뒤를 확인하는 것을 의미한다. [메타 문자](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/SQL Reference.md#메타-문자-1)에서 소개한 "^"와 "$"는 어설션의 하나이며 '앵커'라고 부르기도 한다. +Assertion is checking the forward and backward of a certain character or strings. "^" and "$", introduced in [Metacharacters](#Metacharacters), are examples of assertions. This is also called "anchor". -| 이스케이프 시퀀스 | 설명 | -| ----------------- | ------------------------------------------------------------ | -| \A | 문자열의 시작 위치 | -| \b | 단어 경계. 단어의 시작이나 마지막 위치 | -| \B | 단어 경계가 없을 때 일치 | -| \G | 문자열에서 첫 번째 일치 위치 | -| \z | 문자열의 마지막 위치 | -| \Z | 문자열의 마지막 위치 또는 문자열의 마지막 문자인 줄바꿈 문자 바로 전 위치 | +| Escape Sequence | Description | +| --------------- | ------------------------------------------------------------ | +| \A | The beginning of string | +| \b | The boundary of a word. The beginning or end of word. | +| \B | Match when the boundary of a word is nonexistent | +| \G | Match at the first matching position in the string | +| \z | The end of string | +| \Z | The end of string or right before of the newline character at the end of the string | -**예제** +**Example** -<질의> CUSTOMERS 테이블에서 Street 단어가 포함된 주소(ADDRESS)와 고객 번호(CNO)를 조회하라. + Search for CNO and ADDRESS, which includes the word 'Street', from the CUSTOMERS table. ``` iSQL> SELECT CNO, ADDRESS FROM CUSTOMERS WHERE REGEXP_COUNT(ADDRESS, '\bStreet\b') > 0; @@ -23896,7 +23802,7 @@ CNO ADDRESS -<질의> EMPLOYEES 테이블에서 er 문자로 끝나는 직업을 가진 직원 번호(EMP_JOB)와 직업 이름(EMO)을 조회하라. + Search for ENO and EMP_JOB ending with 'er' from the EMPLOYEES table. ``` iSQL> SELECT ENO, EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, 'er\Z'); @@ -23918,24 +23824,24 @@ ENO EMP_JOB -##### 그룹화 구문 +##### Group -"("와 ")"는 그룹을 표현하는 메타 문자이다. 괄호 안에 여러 표현식을 하나로 묶어 그룹화한 영역을 캡쳐 그룹(capture group)이라고 한다. +"(" and ")" are metacharacter representing group. Capture group refers to an area where multiple expressions inside parentheses are grouped together. -| 문법 | 설명 | +| Syntax | Description | | ------------- | ------------------------------------------------------------ | -| (...) | 괄호 안에서 지정한 문자열을 검색 capture group | -| (?...) | 캡쳐 그룹의 이름을 지정하는 펄 문법이다. named capture group (Perl) | -| (?'name'...) | 캡쳐 그룹의 이름을 지정하는 펄 문법이다. named capture group (Perl) | -| (?P...) | 캡쳐 그룹의 이름을 지정하는 파이썬 문법이다. named capture group (Python) | -| (?:...) | 비캡쳐 그룹 non-capture group | -| (?\|...) | 비캡쳐 그룹 non-capture group; reset group numbers for capture groups in each alternative | -| (?>...) | 역참조 기능을 없앤 비캡쳐 그룹 atomic non-capture group | -| (*atomic:...) | 역참조 기능을 없앤 비캡쳐 그룹 atomic non-capture group | +| (...) | Capture group to search for specified strings in parentheses | +| (?...) | Name capture group (Perl) | +| (?'name'...) | Name capture group (Perl) | +| (?P...) | Name capture group (Python) | +| (?:...) | Non-capture group | +| (?\|...) | Non-capture group; reset group numbers for capture groups in each alternative | +| (?>...) | Atomic non-capture group | +| (*atomic:...) | Atomic non-capture group | -**예제** +**Example** -<질의> GOODS 테이블에서 상품 이름(GNAME)이 TM-T, TM-U, M-T, M-U가 포함된 상품을 조회하라. + Search for GNAME which includes TM-T, TM-U, M-T, M-U from the GOODS table. ``` iSQL> SELECT GNAME FROM GOODS WHERE REGEXP_LIKE(GNAME, '(TM|M)-(T|U)') ; @@ -23963,22 +23869,22 @@ M-U290 -##### 탐색 구문 +##### Lookaround -찾고자 하는 문자열의 앞 또는 뒤에 지정한 문자열이 있는지 확인한다. +This statement checks if the specified string exists before or after the string that users are willing to search. | 문법 | 설명 | | ----------------------------------------------------------- | ------------------------------------------------------------ | -| (?=...) (*pla:...) (*positive_lookahead:...) | 긍정형 전방 탐색(Positive lookaheads) 찾고자 하는 문자열 바로 오른쪽에 `...` 에 해당하는 문자열이 있는 문자열을 검색한다. | -| (?!...) (*nla:...) (*negative_lookahead:...) | 부정형 전방 탐색(Negative lookaheads) 찾고자 하는 문자열 바로 오른쪽에 `...` 에 해당하는 문자열이 없는 문자열을 검색한다. | -| (?<=...) (*plb:...) (*positive_lookbehind:...) | 긍정형 후방 탐색(Positive lookbehinds) 찾고자 하는 문자열 바로 왼쪽에 `...` 에 해당하는 문자열이 있는 문자열을 검색한다. | -| (? 긍정형 전방 탐색을 사용하여 EMPLOYEES 테이블의 EMP_JOB 컬럼에서 sales 바로 오른쪽에 rep가 있는 데이터를 조회하라. + Using the positive lookaheads, search for EMP_JOB column data which 'rep' is to the right of 'sales' from the EMPLOYEES table. ``` iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, 'sales (?=rep)'); @@ -24000,7 +23906,7 @@ sales rep -<질의> 부정형 전방탐색을 사용하여 GOODS 테이블의 GNAME 컬럼에서 TM- 문자열 오른쪽에 U가 나오지 않는 데이터를 조회하라. + Using the negative lookaheads, search for GNAME column data that 'U' is not to the right of 'TM-' from the GOODS table. ``` iSQL> SELECT GNAME FROM GOODS WHERE REGEXP_LIKE(GNAME, 'TM-(?!U)'); @@ -24022,32 +23928,32 @@ TM-L60 -##### 수량자 +##### Quantifiers -찾고자 하는 문자가 몇 번 반복하는 지 지정하여 검색한다. +Quantifiers specify how many times the desired character repeats in the search. -| 문법 | 설명 | +| Syntax | Action | | ------ | ------------------------------------------------------------ | -| ? | 앞의 문자가 0번 또는 1번 나오는 문자를 찾는다. 욕심 많은(greedy) 수량자 방식으로 검색한다. | -| ?+ | 앞의 문자가 0번 또는 1번 나오는 문자를 찾는다. 독점적인(possessive) 수량자 방식으로 검색한다. | -| ?? | 앞의 문자가 0번 또는 1번 나오는 문자를 찾는다. 게으른(lazy) 수량자 방식으로 검색한다. | -| * | 앞의 문자가 0 번 이상 등장하는 문자를 찾는다. 욕심 많은 수량자 방식으로 검색한다. | -| *+ | 앞의 문자가 0 번 이상 등장하는 문자를 찾는다. 독점적인 수량자 방식으로 검색한다. | -| *? | 앞의 문자가 0 번 이상 등장하는 문자를 찾는다. 게으른 수량자 방식으로 검색한다. | -| + | 앞의 문자가 1회 이상 나오는 문자를 찾는다. 욕심 많은 수량자 방식으로 검색한다. | -| ++ | 앞의 문자가 1회 이상 나오는 문자를 찾는다. 독점적인 수량자 방식으로 검색한다. | -| +? | 앞의 문자가 1회 이상 나오는 문자를 찾는다. 게으른 수량자 방식으로 검색한다. | -| {n} | 앞의 문자가 n회 나오는 문자를 찾는다. | -| {n,m} | 앞의 문자가 최소 n번, 최대 m회 반복되는 문자를 찾는다. 욕심 많은 수량자 방식으로 검색한다. | -| {n,m}+ | 앞의 문자가 최소 n번, 최대 m회 반복되는 문자를 찾는다. 독점적인 수량자 방식으로 검색한다. | -| {n,m}? | 앞의 문자가 최소 n번, 최대 m회 반복되는 문자를 찾는다. 게으른 수량자 방식으로 검색한다. | -| {n,} | 앞의 문자가 n회 이상 나오는 문자를 찾는다. 욕심 많은 수량자 방식으로 검색한다. | -| {n,}+ | 앞의 문자가 n회 이상 나오는 문자를 찾는다. 독점적인 수량자 방식으로 검색한다. | -| {n,}? | 앞의 문자가 n회 이상 나오는 문자를 찾는다. 게으른 수량자 방식으로 검색한다. | - -**예제** - -<질의> CUSTOMERS 테이블에서 고객 주소에서 숫자 뒤에 th가 1번 나오는 주소(ADDRESS)와 고객 번호(CNO)를 조회하라. +| ? | Search for a character whose preceding character occurs 0 or 1 times. Greedy quantifier. | +| ?+ | Search for a character whose preceding character occurs 0 or 1 times. Possessive quantifier. | +| ?? | Search for a character whose preceding character occurs 0 or 1 times. Lazy quantifier. | +| * | Search for a character whose preceding character occurs 0 or more times. Greedy quantifier. | +| *+ | Search for a character whose preceding character occurs 0 or more times. Possessive quantifier. | +| *? | Search for a character whose preceding character occurs 0 or more times. Lazy quantifier. | +| + | Search for a character whose preceding character occurs 1 or more times. Greedy quantifier. | +| ++ | Search for a character whose preceding character occurs 1 or more times. Possessive quantifier. | +| +? | Search for a character whose preceding character occurs 1 or more times. Lazy quantifier. | +| {n} | Search for a character whose preceding character occurs n times. | +| {n,m} | Search for a character whose preceding character is repeated at least n times and at most m times. Greedy quantifier. | +| {n,m}+ | Search for a character whose preceding character is repeated at least n times and at most m times. Possessive quantifier. | +| {n,m}? | Search for a character whose preceding character is repeated at least n times and at most m times. Lazy quantifier. | +| {n,} | Search for a character whose preceding character occurs n or more times. Greedy quantifier. | +| {n,}+ | Search for a character whose preceding character occurs n or more times. Possessive quantifier. | +| {n,}? | Search for a character whose preceding character occurs n or more times. Lazy quantifier. | + +**Example** + + Search for CNO and ADDRESS, which 'th' occurs one time after numbers in customer address, from the CUSTOMERS table. ``` iSQL> SELECT CNO, ADDRESS FROM CUSTOMERS WHERE REGEXP_LIKE(ADDRESS, '[0-9]th{1}'); @@ -24061,36 +23967,36 @@ CNO ADDRESS -##### 역참조 +##### Backreference -참조해둔 패턴을 숫자 또는 이름으로 다시 사용하는 것을 의미한다. +Backreference is to reuse a previously referenced pattern using either a number or a name. -| 문법 | 설명 | -| --------- | ---------------------------------------------------------- | -| \n | 번호를 사용하여 참조 (정규식에 따라 순번이 모호할 수 있음) | -| \gn | 번호를 사용하여 참조 | -| \g{n} | 번호를 사용하여 참조 | -| \g+n | 번호를 사용한 상대 참조 (PCRE2 확장 문법) | -| \g-n | 번호를 사용한 상대 참조 | -| \g{+n} | 번호를 사용한 상대 참조 (PCRE2 확장 문법) | -| \g{-n} | 번호를 사용한 상대 참조 | -| \k | 이름을 사용하여 참조 (Perl 문법) | -| \k'name' | 이름을 사용하여 참조 (Perl 문법) | -| \g{name} | 이름을 사용하여 참조 (Perl 문법) | -| \k{name} | 이름을 사용하여 참조 (.NET 문법) | -| (?P=name) | 이름을 사용하여 참조 (Python 문법) | +| Syntax | Description | +| --------- | ------------------------------------------------------------ | +| \n | Referencing using a number (The sequence order can be ambiguous according to the regular expression) | +| \gn | Referencing using a number | +| \g{n} | Referencing using a number | +| \g+n | Relative referencing using a number (PCRE2 extended syntax) | +| \g-n | Relative referencing using a number | +| \g{+n} | Relative referencing using a number (PCRE2 extended syntax) | +| \g{-n} | Relative referencing using a number | +| \k | Referencing using a name (Perl syntax) | +| \k'name' | Referencing using a name (Perl syntax) | +| \g{name} | Referencing using a name (Perl syntax) | +| \k{name} | Referencing using a name (.NET syntax) | +| (?P=name) | Referencing using a name (Python syntax) | -##### 조건부 일치 +##### Conditional Matching -"|"로 구분된 문자 중 하나를 하나를 선택하여 검색한다. +The following statement in the table searches for one of the characters separated by "|". -| 문법 | 설명 | -| ---------------- | ----------------------------- | -| expr\|expr\|expr | 여러 식 중에 하나를 선택한다. | +| Syntax | Description | +| ---------------- | ------------------------------------ | +| expr\|expr\|expr | Select one among several expressions | -**예제** +**Example** -<질의> EMPLOYEES 테이블에서 016이나 018로 시작하는 전화번호(EMP_TEL)와 직원 번호(ENO)를 조회하라. + Search for ENO and EML_TEL which starts with 016 or 018 from EMPLOYEES table. ``` ISQL> SELECT ENO, EMP_TEL FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_TEL, '^016|018'); @@ -24108,26 +24014,26 @@ ENO EMP_TEL -##### 정규표현식의 옵션 +##### Options for Regular Expression -"(?"와 ")" 사이에 묶인 문자로, 정규표현식에서 특별한 지시를 내리는 기호이다. +These are characters enclosed between "(?"and ")". These provide special instructions in regular expressions. -| 옵션 | 설명 | +| Option | Description | | ------- | ------------------------------------------------------------ | -| (?i) | 대소문자 무시 | -| (?J) | 같은 이름을 가지는 그룹 허용 | -| (?m) | 다중 행에서 검색 | -| (?n) | 자동 캡쳐를 사용하지 않음 | -| (?s) | 단일 행에서 검색 | -| (?U) | 비탐욕적(게으른) 방법으로 검색 | -| (?x) | 공백 문자를 무시한다. 문자 클래스 안의 공백 문자는 예외이다. | -| (?xx) | 공백 문자를 무시한다. 문자 클래스 안의 공백 문자도 무시한다. | -| (?-...) | 설정된 옵션(들) 해제 | -| (?^) | imnsx 옵션 해제 | +| (?i) | Ignore case sensitivity | +| (?J) | Allow groups with the same name | +| (?m) | Search in multi-line mode | +| (?n) | Disable automatic capturing | +| (?s) | Search in single-line mode | +| (?U) | Search non-greedy(Lazy) mode | +| (?x) | Ignore whitespace. Whitespace characters within character classes are an exception. | +| (?xx) | Ignore whitespace, including whitespace characters within character classes. | +| (?-...) | Unset the specified option(s) | +| (?^) | Unset i/m/n/s/x option(s) | -**예제** +**Example** -<질의> EMPLOYEES 테이블에서 대소문자 구분없이 m이 포함된 성(E_LASTNAME)을 검색하라. + Search for E_LASTNAME which includes m without case sensitivity from the EMPLOYEES table. ``` iSQL> SELECT E_LASTNAME FROM EMPLOYEES WHERE REGEXP_LIKE(E_LASTNAME, '(?i)m'); @@ -24144,17 +24050,17 @@ iSQL> -##### 주석 +##### Comment -정규표현식에서 사용하는 주석이다. "(?#"는 주석의 시작을 의미하며 닫는 괄호(")")는 주석의 끝을 의미한다. +This is the comment using in the regular expression. It starts with "(?#" and ends with")". | 문법 | 설명 | | -------- | ---- | | (?#....) | 주석 | -**예제** +**Example** -<질의> + Search for EMP_JOB which includes 'mas' or 'man' without case sensitivity, with the comment 'test', from the EMPLOYEES table. ``` iSQL> SELECT EMP_JOB FROM EMPLOYEES WHERE REGEXP_LIKE(EMP_JOB, '(?i)M(?#test)A(s|n)'); @@ -24169,20 +24075,24 @@ manager -### 정규 표현식 모드 별 문법 차이점 +### Syntax Differences between Regular Expression Modes + +These are representative examples of differences in regular expression syntax between Altibase regular expression mode and PCRE2 compatibility mode. + +| Regular Expression Syntax | Altibase Regular Expression Mode | PCRE2 Compatibility Mode | Difference | +| ------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| POSIX Character Class | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[:punct:]+');` | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[[:punct:]]+');` | POSIX character class expressions are different. | +| Escape Sequence | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','\l+');` | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[[:lower:]]+');` | PCRE2 compatibility mode does not support `\l`. Instead, it supports [[:lower:]]. | +| POSIX Equivalence Class | [=A=] | - | Not supported | +| | [A-[.CH.]] | - | Not supported | -Altibase 정규 표현식 모드와 PCRE2 호환 모드의 정규 표현식 문법 차이를 나타내는 대표적인 예이다. +### Regular Expression Error Message -| 정규 표현식 문법 | Altibase 정규 표현식 모드 | PCRE2 호환 모드 | 차이 | -| ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| POSIX 문자 클래스 | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[:punct:]+');` | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[[:punct:]]+');` | POSIX 문자 클래스 표현식이 다르다. | -| 이스케이프 스퀀스 | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','\l+');` | `SELECT REGEXP_COUNT('ABCDEFG1234567abcdefgh!@#$%^&*(','[[:lower:]]+');` | PCRE2 호환 모드에서는 `\l`문법을 지원하지 않는다. [[:lower:]]로 대체할 수 있다. | -| POSIX 동등 클래스 | [=A=] | - | 지원하지 않는다. | -| | [A-[.CH.]] | - | 지원하지 않는다. | +The error code 0x2106C occurring in PCRE2 compatibility mode is presented in the following format in the error message. <1%s> represents the message returned by the PCRE2 library, and <0%s> indicates the location where the error occurred in Altibase. -### 정규 표현식 에러 메시지 +The cause and solution for this error message can be found in the [15.Regular Expression Error Code]() section of the Error Message Reference. -PCRE2 호환 모드에서 발생하는 에러 중 0x2106C 에러 코드는 아래와 같은 형식으로 에러 메시지가 출력된다. <1%s>는 PCRE2 라이브러리에서 반환한 메시지이며 <0%s>는 Altibase 에서 해당 에러가 발생한 위치를 의미한다. 이 에러 메시지에 대한 원인과 조치 방법은 Error Message Reference의 [15.Regular Expression Error Code](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/Error Message Reference.md#15regular-expression-error-code) 장에서 확인할 수 있다. + 이 에러 메시지에 대한 원인과 조치 방법은 Error Message Reference의 [15.Regular Expression Error Code](https://github.com/ALTIBASE/Documents/blob/master/Manuals/Altibase_7.3/kor/Error Message Reference.md#15regular-expression-error-code) 장에서 확인할 수 있다. ``` ERR-2106C : PCRE2 error: <1%s> (occurred in <0%s>) diff --git a/Manuals/Altibase_7.3/eng/media/SQL/limit_clause_.gif b/Manuals/Altibase_7.3/eng/media/SQL/limit_clause.gif similarity index 100% rename from Manuals/Altibase_7.3/eng/media/SQL/limit_clause_.gif rename to Manuals/Altibase_7.3/eng/media/SQL/limit_clause.gif diff --git a/Manuals/Altibase_7.3/kor/SQL Reference.md b/Manuals/Altibase_7.3/kor/SQL Reference.md index aebe21f03..9b7cddb9c 100644 --- a/Manuals/Altibase_7.3/kor/SQL Reference.md +++ b/Manuals/Altibase_7.3/kor/SQL Reference.md @@ -12152,7 +12152,7 @@ multiple delete 제약 사항: *tbl_ref* -multiple update 를 하기 위한 table 을 명시한다. +multiple_delete를 하기 위한 table 을 명시한다. *one_table* From 4b8db977ac9959cda2d3b54a8035f3929d8a9f47 Mon Sep 17 00:00:00 2001 From: Soyoon-Choi Date: Tue, 16 Jan 2024 14:43:51 +0900 Subject: [PATCH 3/3] Update SQL Reference.md --- Manuals/Altibase_7.3/eng/SQL Reference.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Manuals/Altibase_7.3/eng/SQL Reference.md b/Manuals/Altibase_7.3/eng/SQL Reference.md index 5114826ec..6c0369b79 100644 --- a/Manuals/Altibase_7.3/eng/SQL Reference.md +++ b/Manuals/Altibase_7.3/eng/SQL Reference.md @@ -24054,9 +24054,9 @@ iSQL> This is the comment using in the regular expression. It starts with "(?#" and ends with")". -| 문법 | 설명 | -| -------- | ---- | -| (?#....) | 주석 | +| Syntax | Description | +| -------- | ----------- | +| (?#....) | Comment | **Example**