SQLite 자습서(4): 내장 함수

1. 집합 함수:
SQLite에서 지원하는 집합 함수는 많은 다른 관계형 데이터베이스에서도 지원되기 때문에 우리는 모든 집합 함수에 대한 간략한 설명만 할 뿐 더 많은 예시를 제시하지 않을 것이다.여기에 더 많은 설명이 필요한 것은 모든 집합 함수에 대해distinct 키워드는 함수 매개 변수 필드의 선행 속성으로 계산할 때 모든 중복된 필드 값을 무시할 수 있다는 것이다. 예를 들어count (distinct x) 이다.
 
함수
설명
avg(x)
이 함수는 같은 그룹의 인삼 숫자 세그먼트의 평균값을 되돌려줍니다.SQLite는 숫자 값으로 변환할 수 없는 String 및 BLOB 유형의 필드 값인 "HELLO"를 0으로 간주합니다.avg 함수의 결과는 항상 부동점형이며, 유일한 예외는 모든 필드 값이 NULL이며, 그러면 이 함수의 결과도 NULL이다.
count(x|*)  
count (x) 함수는 같은 그룹에 되돌아옵니다. x 필드의 값은 NULL의 줄 수와 같지 않습니다.count (*) 함수는 같은 그룹에 있는 데이터 줄 수를 되돌려줍니다.
group_concat(x[,y])
이 함수는 NULL이 아닌 모든 x 값을 연결하는 문자열을 반환합니다.이 함수의 y 매개 변수는 각 x 값 사이의 구분자로 사용되며, 호출할 때 이 매개 변수를 무시하면 연결할 때 기본 구분자 ","를 사용합니다.그리고 각 문자열 간의 연결 순서가 확실하지 않습니다.  
max(x)
이 함수는 같은 그룹 내의 x 필드의 최대 값을 되돌려줍니다. 이 필드의 모든 값이 NULL이면 이 함수도 NULL을 되돌려줍니다.
min(x)
이 함수는 같은 그룹 내의 x 필드의 최소값을 되돌려줍니다. 이 필드의 모든 값이 NULL이면 이 함수도 NULL을 되돌려줍니다.
sum(x)
이 함수는 같은 그룹 내의 x 필드 값의 총계를 되돌려줍니다. 필드 값이 모두 NULL이면 이 함수도 NULL을 되돌려줍니다.모든 x 필드 값이 정형 또는 NULL이면 이 함수는 정형 값을 반환합니다. 그렇지 않으면 부동 소수점 값을 반환합니다.마지막으로 지적해야 할 것은 모든 데이터 값이 정형화되면 결과가 상한선을 넘으면'integer overflow'이상을 던진다는 것이다.
total(x)
이 함수는 표준 SQL에 속하지 않으며, 그 기능은sum와 기본적으로 같고, 단지 계산 결과가sum보다 더 합리적일 뿐이다.예를 들어 모든 필드 값이 NULL일 때sum와 달리 이 함수는 0.0을 되돌려줍니다.그리고 이 함수는 항상 부동점형 수치를 되돌려줍니다.이 함수는 시종 이상을 던지지 않는다.
2. 핵심 함수:
다음 함수는 다음과 같은 목록을 참조하여 SQLite 기본값으로 제공되는 내장 함수입니다.
 
함수
설명
abs(X)
이 함수는 수치 매개 변수 X의 절대 값을 되돌려줍니다. X가 NULL이면 NULL을, X가 수치로 변환할 수 없는 문자열이면 0을 되돌려주고, X가 Integer의 상한선을 초과하면 "Integer Overflow"의 이상을 던집니다.
changes()
이 함수는 최근에 수행된 INSERT, UPDATE 및 DELETE 문장에 영향을 미치는 데이터 행 수를 반환합니다.우리도 C/C++ 함수 sqlite3_를 실행할 수 있다changes () 는 같은 결과를 얻었습니다.
coalesce(X,Y,...)  
함수 매개변수 중 첫 번째 NULL이 아닌 매개변수를 반환하고 매개변수가 모두 NULL이면 NULL을 반환합니다.이 함수는 적어도 2개의 매개 변수가 있다.
ifnull(X,Y)
이 함수는 두 개의 인자에 대한coalesce() 함수와 같습니다. 즉, 첫 번째 NULL이 아닌 함수 인자를 되돌려주고, 두 개 모두 NULL이면 NULL을 되돌려줍니다.
length(X)  
매개변수 X가 문자열이면 문자의 수를 반환하고 수치이면 문자열의 길이를 반환하고 NULL이면 NULL을 반환합니다.
lower(X)
함수 매개변수 X의 소문자를 반환합니다. 기본적으로 이 함수는 ASCII 문자에만 적용됩니다.
ltrim(X[,Y])  
선택적 매개변수 Y가 없으면 이 함수는 매개변수 X의 왼쪽에 있는 모든 공백을 제거합니다.매개변수 Y가 있는 경우 X 왼쪽에서 Y에 나타나는 문자를 제거합니다.마지막으로 제거된 문자열을 되돌려줍니다.
max(X,Y,...)
함수 매개변수의 최대값을 반환하고 NULL인 매개변수가 있으면 NULL을 반환합니다.
min(X,Y,...)
함수 매개변수의 최소값을 반환하고 NULL인 매개변수가 있으면 NULL을 반환합니다.
nullif(X,Y)
함수 매개변수가 같으면 NULL을 반환하고 그렇지 않으면 첫 번째 매개변수를 반환합니다.  
random()  
정형의 위조 무작위 수를 되돌려줍니다.
replace(X,Y,Z)  
문자열 유형의 함수 매개 변수 X의 모든 하위 문자열 Y를 문자열 Z로 바꾸고, 마지막으로 교체된 문자열을 되돌려줍니다. 원본 문자열 X는 변하지 않습니다.
round(X[,Y])
값 매개변수 X가 Y 각도로 반올림된 값을 반환합니다. 매개변수 Y가 없는 경우 기본 매개변수 값은 0입니다.  
rtrim(X[,Y])  
선택적 매개변수 Y가 없으면 매개변수 X의 오른쪽에 있는 모든 공백 문자가 제거됩니다.Y 매개변수가 있으면 X 오른쪽에 있는 Y 문자가 모두 제거됩니다.마지막으로 제거된 문자열을 되돌려줍니다.
substr(X,Y[,Z])
함수 매개 변수 X의 하위 문자열을 되돌려줍니다. Y위부터(X의 첫 번째 문자 위치는 1)Z 길이의 문자를 캡처하고 Z 매개 변수를 무시하면 Y자 뒤에 있는 모든 문자를 가져옵니다.Z 값이 음수이면 Y위부터 abs (Z) 자를 왼쪽으로 캡처합니다.Y 값이 음수이면 X 문자열의 끝부분부터 abs(Y) 위치까지 계산합니다. 
total_changes()
이 함수는 이 연결이 열릴 때부터 INSERT, UPDATE, DELETE 문장이 모두 영향을 미치는 줄 수를 되돌려줍니다.우리도 C/C++ 인터페이스 함수 sqlite3_를 통해total_changes () 는 같은 결과를 얻었습니다.
trim(x[,y])
선택적 매개변수 Y가 없는 경우 이 함수는 매개변수 X 양쪽에 있는 모든 공백 문자를 제거합니다.매개변수 Y가 있는 경우 X 양쪽에서 Y에 나타나는 문자를 제거합니다.마지막으로 제거된 문자열을 되돌려줍니다. 
upper(X)
함수 매개변수 X의 대문자를 반환합니다. 기본적으로 이 함수는 ASCII 문자에만 적용됩니다.
typeof(X)
"Integer,text,real,null"등 함수 매개 변수 데이터 형식의 문자열 표시 형식을 되돌려줍니다.
3. 날짜와 시간 함수:
SQLite는 다음과 같은 4가지 날짜 및 시간 관련 함수를 지원합니다.
    1). date(timestring, modifier, modifier, ...)
    2). time(timestring, modifier, modifier, ...)
    3). datetime(timestring, modifier, modifier, ...)
    4). strftime(format, timestring, modifier, modifier, ...)
상기 네 개의 함수는 하나의 시간 문자열을 매개 변수로 받아들였고, 그 다음에 0개 이상의 수정자가 있다.그 중에서strftime () 함수는 첫 번째 인자로 형식 문자열을 받아들인다.strftime () 와 C 실행 시 라이브러리의 동명 함수는 완전히 같습니다.다른 세 가지 함수에 대해date 함수의 기본 형식은 "YYY-MM-DD", time 함수의 기본 형식은 "HH:MM:SS", datetime 함수의 기본 형식은 "YYY-MM-DD HH:MM:SS"입니다.   
   1. strftime 함수의 형식 정보:
  
형식
설명
%d
day of month: 00
%f
fractional seconds: SS.SSS
%H
hour: 00-24
%j
day of year: 001-366
%J
Julian day number
%m
month: 01-12
%M
minute: 00-59
%s
seconds since 1970-01-01
%S
seconds: 00-59
%w
day of week 0-6 with Sunday==0
%W
week of year: 00-53
%Y
year: 0000-9999
%%
%
추가로 지적해야 할 것은 나머지 세 시간 함수는 모두 strftime로 표시할 수 있다는 것이다. 예를 들어
 

    date(...)         strftime('%Y-%m-%d', ...)
    time(...)         strftime('%H:%M:%S', ...)
    datetime(...)   strftime('%Y-%m-%d %H:%M:%S', ...)
  
    2. 시간 문자열 형식:
다음 목록을 참조하십시오.
    1). YYYY-MM-DD
    2). YYYY-MM-DD HH:MM
    3). YYYY-MM-DD HH:MM:SS
    4). YYYY-MM-DD HH:MM:SS.SSS
    5). HH:MM
    6). HH:MM:SS
    7). HH:MM:SS.SSS
    8). now
5)-7)에는 시간만 포함되어 있으며 SQLite는 2000-01-01로 가정합니다.8) 현재 시간을 나타냅니다.
   
   3. 수정자:
다음 목록을 참조하십시오.
    1). NNN days
    2). NNN hours
    3). NNN minutes
    4). NNN.NNNN seconds
    5). NNN months
    6). NNN years
    7). start of month
    8). start of year
    9). start of day
    10).weekday N    
1)에서 6)까지는 지정된 날짜 또는 시간의 값을 간단하게 가감할 뿐, NNN의 값이 음수이면 가감하고 그렇지 않으면 가감합니다.7) 에서 9) 사이에 지정된 날짜 섹션이 현재 월, 년 또는 일의 시작에 설정됩니다.10) 다음 주 N까지 날짜를 이동합니다. 여기서 일요일은 0입니다.참고: 수정자의 순서는 매우 중요합니다. SQLite는 왼쪽에서 오른쪽으로 순서대로 수정자를 실행합니다.
   
    4. 예:
 

    -- 。
    sqlite> SELECT date('now'); 
    2012-01-15   
    -- 。
    sqlite> SELECT date('now','start of month','1 month','-1 day');
    2012-01-31
    -- 1970-01-01 00:00:00 。
    sqlite> SELECT strftime('%s','now');
    1326641166   
    -- 10 。
    sqlite> SELECT date('now','start of year','+9 months','weekday 2');
    2012-10-02  

좋은 웹페이지 즐겨찾기