표현식 유형
표현식에는 값과 유형이 모두 있으며 유형은 값이 속해야 하는 한계의 세트입니다. 다음 규칙에서는 EGL 기본 유형을 사용합니다. 기본 데이터 유형의 내용을 참조하십시오.
다음 규칙은 표현식의 유형을 판별합니다. 이러한
규칙은 플랫폼에 따라 다른 개별 피연산자의 가능한
변환(승격)을 다루지 않습니다.
- 숫자 표현식
- 해당 규칙은 산술 연산자와 관련된 표현식에 적용됩니다.
이 규칙은 정밀도 또는 길이와 무관한 표현식의 예상 유형을
정의하며, 피연산자가 변환되는 프로세스가 대상 언어마다
다르므로 피연산자의 변환 방식을 설명하지 않습니다. 다음 이항
연산자를 사용하려면 하나 이상의 피연산자를 승격해야 합니다.
- 산술 연산자 +, -, *, /, %, **
- 숫자 비교 연산자 ==, !=, <, >, <=, >=
- 비트 연산자 &, |, ^
- 산술 연산자와 숫자 비교 연산자에 다음 규칙이
순서대로 적용됩니다.
- 한 피연산자가 텍스트 유형인 경우 표현식의 유형은 NUMBER입니다.
- 한 피연산자가 FLOAT인 경우 표현식의 유형은 FLOAT입니다.
- 한 피연산자가 SMALLFLOAT인 경우 표현식의 유형은 SMALLFLOAT입니다.
- 한 피연산자가 NUM인 경우 표현식의 유형은 NUM입니다.
- 한 피연산자가 NUMC인 경우 표현식의 유형은 NUMC입니다.
- 한 피연산자가 DECIMAL인 경우 표현식의 유형은 DECIMAL입니다.
- 한 피연산자가 BIN인 경우 표현식의 유형은 BIN입니다.
- 한 피연산자가 BIGINT인 경우 표현식의 유형은 BIGINT입니다.
- 한 피연산자가 INT인 경우 표현식의 유형은 INT입니다.
- 한 피연산자가 SMALLINT인 경우 표현식의 유형은 SMALLINT입니다.
각 비트 연산자 and(&), or(|), exclusive or(^)가 두 개의 피연산자에 대해 INT 유형의 값을 리턴하는 비트 연산을 수행합니다. 각 피연산자는 HEX(2), HEX(4), HEX(8), INT 또는 SMALLINT 유형 중 하나입니다. HEX 또는 SMALLINT 피연산자를 INT 유형으로 변환하여 연산을 시작합니다. HEX의 경우 연산에서 길이가 4바이트가 될 때까지 피연산자의 값을 0으로 왼쪽 채움합니다.
- 텍스트 표현식
- 해당 규칙은 텍스트 유형 값이 있어야 하는 2항 연산의 피연산자에 적용됩니다. 여기서 피연산자는 숫자 유형이 아니며 따라서 숫자 표현식에 대한 규칙이 적용되지 않는다고 가정합니다. 텍스트 비교 연산자 ==, !=, <, >, <=, >=를 사용하려면 하나 이상의 피연산자를 승격해야 합니다.
- 다음 규칙이 순서대로 적용됩니다.
- 한 피연산자가 STRING인 경우 다른 피연산자가 STRING으로 변환됩니다.
- 한 피연산자가 STRING(i)인 경우 두 번째 피연산자가 STRING(j)로 변환됩니다. 여기서 j는 i와 두 번째 피연산자의 길이 중 큰 값입니다.
- 한 피연산자가 UNICODE(i)인 경우 두 번째 피연산자가 UNICODE(j)로 변환됩니다. 여기서 j는 i와 두 번째 피연산자의 길이 중 큰 값입니다.
- 한 피연산자가 MBCHAR(i)인 경우 두 번째 피연산자가 MBCHAR(j)로 변환됩니다. 여기서 j는 i와 두 번째 피연산자의 길이 중 큰 값입니다.
- 한 피연산자가 CHAR(i)인 경우 두 번째 피연산자가 CHAR(j)로 변환됩니다. 여기서 j는 i와 두 번째 피연산자의 길이 중 큰 값입니다.