SQLite 자습서(6): 표현식 설명

1. 일반 표현식:
대부분의 관계식 데이터베이스와 마찬가지로 SQLite는 SQL 표준에서 제공하는 표현식을 잘 지원할 수 있으며, 함수도 다음과 같이 SQL 표준과 일치합니다.

    ||
    *    /    %
    +    -
    <<   >>   &    |
    <    <=   >    >=
    =    ==   !=   <>   IS   IS NOT   IN   LIKE
    AND  
    OR
    ~    NOT
위의 표현식에서 유일하게 설명해야 할 것은 "||"입니다. 이 표현식은 주로 두 문자열 간의 연결에 사용되며, 그 반환값은 연결된 문자열입니다. 이 조작부호의 양쪽 작업 수가 비문자열 형식일지라도 이 표현식을 실행하기 전에 미리 문자열 형식으로 변환된 후에 연결해야 합니다.
2. 조건 표현식:
표현식의 구문 규칙은 다음과 같습니다.
 

    1). CASE x WHEN w1 THEN r1 WHEN w2 THEN r2 ELSE r3 END
    2). CASE WHEN x=w1 THEN r1 WHEN x=w2 THEN r2 ELSE r3 END
 
첫 번째 경우, 조건 표현식 x는 한 번만 계산한 다음 WHEN 키워드 이후의 조건과 하나씩 비교합니다. 같은 조건을 찾을 때까지 비교 규칙은 등호(=) 표현식과 같습니다.일치하는 조건을 찾으면 다음 THEN 키워드가 가리키는 값을 되돌려주고, 일치하는 것을 찾지 못하면 ELSE 키워드 이후의 값을 되돌려주고, ELSE 분기가 없으면 NULL을 되돌려줍니다.두 번째 상황에 대해 첫 번째 상황에 비해 유일한 차이점은 표현식 x가 여러 번 실행될 수 있다는 것이다. 예를 들어 첫 번째 WHEN 조건이 일치하지 않으면 뒤의 WHEN 조건을 계속 계산하고 다른 규칙은 모두 첫 번째 것과 완전히 같다.마지막으로 설명해야 할 것은 상기 두 가지 형식의 CASE 표현식은 모두 단락 원칙을 준수한다는 것이다. 즉, 첫 번째 표현식의 조건이 일치하면 그 후에 모든 WHEN 표현식은 더 이상 실행되거나 비교되지 않는다는 것이다.
3. 변환 표현식:
표현식의 구문 규칙은 다음과 같습니다.
 

    CAST(expr AS target_type)
 
이 표현식은 매개변수 expr을 target_로 변환합니다.type 유형, 구체적인 변환 규칙은 다음과 같습니다.
대상 유형
변환 규칙 설명
TEXT
INTEGER 또는 REAL 유형의 값을 TEXT 유형으로 직접 변환하면 됩니다. 예를 들어 C/C++ 인터페이스 함수 sqlite3_snprintf가 완성한 일.
REAL
TEXT 유형의 값을 REAL 유형으로 변환하면 텍스트의 맨 앞부분에서 실수로 변환할 수 있는 텍스트가 해당 실수로 변환되고 나머지는 무시됩니다.이 텍스트 값의 선행 0도 모두 무시됩니다.텍스트 값에 실수로 변환할 문자가 없으면 CAST 표현식의 변환 결과는 0.0입니다.
INTEGER
TEXT 유형의 값을 INTEGER 유형으로 변환하면 텍스트의 맨 앞부분에서 정수로 변환할 수 있는 텍스트가 해당 정수로 변환되고 나머지는 무시됩니다.이 텍스트 값의 선행 0도 모두 무시됩니다.텍스트 값이 정수로 변환할 문자가 없으면 CAST 표현식의 변환 결과는 0입니다.
변환이 실수 값을 INTEGER 유형으로 변환하는 경우 실수 소수점 부분을 직접 차단합니다.실수가 너무 크면 최대 음정수 -9223372036854775808을 반환합니다.
NUMERIC  
NUMERIC 유형으로 텍스트 값을 변환하는 경우 먼저 이 값을 REAL 유형으로 강제 변환합니다. 이 값은 REAL을 INTEGER로 변환해도 데이터 정보가 손실되지 않고 완전히 되돌릴 수 없는 경우에만 SQLite가 INTEGER 유형으로 변환합니다.
마지막으로 설명해야 할 것은 expr이 NULL이면 변환의 결과도 NULL입니다.

좋은 웹페이지 즐겨찾기