random 함수를 사용하면 난수를 생성할 수 있다. 여기에서는 random 함수의 사용법에 대해 설명한다.

random 함수 사용법

random 함수는 난수를 생성하는데 사용한다. 형식은 다음과 같다.

random()

난수를 생성한다. 생성하는 난수의 범위는 -9223372036854775808에서 +9223372036854775807까지의 정수이다.

양수만 사용하려면 "숫자 절대 값 구하기 (abs 함수)"을 사용하여 절대 값을 구한다. 또한 특정 범위의 수치로 난수를 구하려면 % 연산자를 사용한다.

--

그러면 실습으로 randam 함수를 사용하여 -9에서 9까지와 0에서 9까지의 난수를 생성해 보겠다.

select random() % 10, abs(random()) % 10;
sqlite> select random() % 10, abs(random()) % 10;
random() % 10  abs(random()) % 10
-------------  ------------------
8              1                 
sqlite> select random() % 10, abs(random()) % 10;
random() % 10  abs(random()) % 10
-------------  ------------------
-1             7                 
sqlite> select random() % 10, abs(random()) % 10;
random() % 10  abs(random()) % 10
-------------  ------------------
-7             9                 
sqlite> select random() % 10, abs(random()) % 10;
random() % 10  abs(random()) % 10
-------------  ------------------
6              3                 
sqlite> 

SELECT 문을 실행할 때마다 -9에서 9까지의 임의의 숫자와 0에서 9까지의 난수가 표시 되었다.

abs 함수를 사용하면 숫자의 절대 값을 구할 수 있다. 여기에서 abs 함수의 사용법에 대해 설명한다.

abs 함수 사용법

abs 함수는 숫자의 절대 값을 구하기 위해 사용한다. 형식은 다음과 같다.

abs(숫자)

인수에 지정된 숫자의 절대 값을 구하여 반환한다. 양수는 그대로 반환하고, 음수는 양수를 반환한다.

abs(0.47);      /* 0.47 */
abs(-19);       /* 19 */

여기서 인수에 NULL을 지정하면 NULL을 반환하고, 숫자가 아닌 값 (숫자로 변환할 수 없는 값)을 지정한 경우에는 0.0를 반환한다.

abs(NULL);      /* NULL */
abs('-18.5');   /* 18.5 */
abs('pen');     /* 0.0 */

인수에 컴럼명을 지정하면 컬럼에 저장된 값의 절대 값을 구한다.

--

그러면 실습으로 절대 값을 구해 보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.

create table test (id, data);

abs 함수의 사용법 (1)

INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.

insert into test values (1, 18);
insert into test values (2, -7.4);
insert into test values (3, NULL);
insert into test values (4, 'Flower');
insert into test values (5, '-16');
sqlite> insert into test values (1, 18);
sqlite> insert into test values (2, -7.4);
sqlite> insert into test values (3, NULL);
sqlite> insert into test values (4, 'Flower');
sqlite> insert into test values (5, '-16');
sqlite> 

그러면 abs 함수를 사용하여 data 컬럼에 저장되는 값의 절대 값을 구해 본다.

select id, data, abs(data) from test;
sqlite> .mode column
sqlite> .header on
sqlite> 
sqlite> select id, data, abs(data) from test;
id          data        abs(data) 
----------  ----------  ----------
1           18          18        
2           -7.4        7.4       
3                                 
4           Flower      0.0       
5           -16         16.0 

컬럼에 저장된 값의 절대 값이 표시되었다.

round 함수를 사용하면 숫자를 반올림 할 수 있다. 여기에서는 round 함수의 사용법에 대해 설명한다.

round 함수 사용법

round 함수는 숫자를 반올림하는데 사용한다. 형식은 다음과 같다.

round(숫자)
round(숫자, 자릿수)

인수로 지정된 숫자를 소수점의 위치에서 반올림하여 반환한다. 두 번째 인수는 자릿수를 지정할 수 있다. 예를 들어, 2를 지정하면 소수점 2자리에서 반올림한다.

round(0.47);      /* 0.0 */
round(0.536);     /* 1.0 */
round(0.536, 0);  /* 1.0 */
round(0.536, 1);  /* 0.5 */
round(0.536, 2);  /* 0.54 */

여기서 자릿수에는 음수를 지정할 수 없다.

그리고, 인수에 컬럼명 지정하면 컬럼에 저장되는 값에 반올림한다.

--

그러면 실습으로 반올림을 구해 보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.

create table point (id integer, point real);
sqlite> create table point (id integer, point real);
sqlite> 

INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.

insert into point values (1, 15.4853);
insert into point values (2, 27.143);
insert into point values (3, 38.902);
insert into point values (4, 26.5521);
insert into point values (5, 30.36);
sqlite> insert into point values (1, 15.4853);
sqlite> insert into point values (2, 27.143);
sqlite> insert into point values (3, 38.902);
sqlite> insert into point values (4, 26.5521);
sqlite> insert into point values (5, 30.36);
sqlite> 

그러면 round 함수를 사용하여 point 컬럼에 저장되는 값을 소수점의 위치에서 반올림을 구해 본다.

select id, point, round(point) from point;
sqlite> .mode column
sqlite> .header on
sqlite> 
sqlite> select id, point, round(point) from point;
id          point       round(point)
----------  ----------  ------------
1           15.4853     15.0        
2           27.143      27.0        
3           38.902      39.0        
4           26.5521     27.0        
5           30.36       30.0        
sqlite> 

컬럼에 저장된 값에 소수점의 위치에서 반올림한 값이 표시 되었다.

다음은 round 함수를 사용하여 point 컬럼에 저장되는 값을 소수점 첫째 자리의 위치와 소수점 둘째 자리의 위치에서 반올림 한 값을 구해 본다.

select id, point, round(point, 1), round(point, 2) from point;
sqlite> select id, point, round(point, 1), round(point, 2) from point;
id          point       round(point, 1)  round(point, 2)
----------  ----------  ---------------  ---------------
1           15.4853     15.5             15.49          
2           27.143      27.1             27.14          
3           38.902      38.9             38.9           
4           26.5521     26.6             26.55          
5           30.36       30.4             30.36          
sqlite> 

컬럼에 저장된 값에 지정된 위치에서 반올림한 값이 표시 되었다.

quote 함수를 사용하면 문자열을 작은 따옴표(')으로 둘러싼 값을 받아올 수 있다. 여기에서는 quote 함수의 사용법에 대해 설명한다.

quote 함수 사용법

quote 함수는 문자열을 작은 따옴표(')로 둘러싸는데 사용한다. 형식은 다음과 같다.

quote(값)

인수로 문자열을 지정한 경우에는 문자열을 작은 따옴표로 둘러싼 '문자열'와 같은 형식으로 반환한다. 인수에 값을 지정하면 그대로 반환한다. BLOB 형의 데이터는 X'데이터'의 형식으로 반환한다. quote 함수는 값을 SQL 문에서 사용할 수 있는 형식으로 만들고 싶은 경우에 사용한다.

인수로 지정한 문자열에 작은 따옴표(')가 포함된 경우에는 작은 따옴표를 하나 더 붙여서 반환한다.

인수에 컬럼명을 지정한 경우에는 컬럼에 저장되는 값에 대해 작은 따움표로 둘러싼다.

--

그러면 실습을 해보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.

create table datadb (id, data);
sqlite> create table datadb (id, data);
sqlite> 

INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.

insert into datadb values (1, 'Melon');
insert into datadb values (2, 18);
insert into datadb values (3, 3.52);
insert into datadb values (4, 'I''am a student');
sqlite> insert into datadb values (1, 'Melon');
sqlite> insert into datadb values (2, 18);
sqlite> insert into datadb values (3, 3.52);
sqlite> insert into datadb values (4, 'I''am a student');
sqlite> 

그러면 quote 함수를 사용하여 data 컬럼에 저장되는 값을 작은 따옴표로 둘러싼 값을 받아온다.

select id, data, quote (data) from datadb;
sqlite> .mode column
sqlite> .header on
sqlite> .width 10 10 20
sqlite> 
sqlite> select id, data, quote (data) from datadb;
id          data        quote (data)        
----------  ----------  --------------------
1           Melon       'Melon'             
2           18          18                  
3           3.52        3.52                
4           I'am a stu  'I''am a student'   
sqlite> 

컬럼에 저장되는 값에 숫자는 그대로 표시하고, 문자열에 대해서는 작은 따옴표 둘려싸서 값을 받아왔다.

trim 함수를 사용하면 문자열의 시작과 끝에서 공백을 제거할 수 있다. rtrim 함수, ltrim 함수도 비슷하게 동작한다. 여기에서는 trim 함수의 사용법에 대해 설명한다.

trim 함수 사용법

trim 함수는 문자열 앞뒤에서 지정한 문자를 제거하는데 사용한다. 형식은 다음과 같다.

trim(문자열)
trim(문자열, 문자)

trim 함수 지정된 문자열의 처음과 마지막에 있는 공백을 제거하는데 사용한다. 구체적으로 문자열의 처음 부분이 공백이라면 공백 문자가 아닌 문자까지의 공백을 모두 제거한다. 또한 마찬가지로 문자열의 마지막이 공백이라면 뒤에서 마지막 문자까지의 공백을 모두 제거한다.

주의

문자열의 시작 부분과 끝 부분의 공백 문자를 제거하지만, 문자열 중간에 있는 공백은 제거되지 않는다.

인수에 컴럼을 지정한 경우에는 컴럼에 저장된 값에서 처음과 마지막의 공백을 제거하고 받아온다.

또한 두 번째 인수에 문자를 지정하면 공백 문자가 아닌 두 번째 인수로 지정한 문자를 문자열의 앞뒤로 제거한다.

비슷하게 사용되는 함수로는 rtrim 함수 ltrim 함수가 있다. rtrim 함수는 문자열의 끝에서부터 지정된 문자를 제거하는데 사용한다. ltrim 함수는 문자열의 시작 부분에서 지정된 문자를 제거하는 데 사용한다. 형식은 다음과 같다.

rtrim(문자열)
rtrim(문자열, 문자)
ltrim(문자열)
ltrim(문자열, 문자)

--

그러면 실습을 해보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.

create table msgdb (id integer, msg text);
sqlite> create table msgdb (id integer, msg text);
sqlite> 

INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.

insert into msgdb values(1, ' Hello! ');
insert into msgdb values(2, ' Good Bye ');
insert into msgdb values(3, '__Thank you__');
sqlite> insert into msgdb values(1, ' Hello! ');
sqlite> insert into msgdb values(2, ' Good Bye ');
sqlite> insert into msgdb values(3, '__Thank you__');
sqlite> 

그러면 trim 함수 및 ltrim 함수와 rtrim 함수를 사용하여 msg 컬럼에 저장된 문자열에서 처음과 끝에 있는 공백을 제거한 문자열을 받아온다.

select id, quote(trim(msg)), quote(ltrim(msg)), quote(rtrim(msg)) from msgdb;
sqlite> select id, quote(trim(msg)), quote(ltrim(msg)), quote(rtrim(msg)) from msgdb;
id          quote(trim(msg))  quote(ltrim(msg))  quote(rtrim(msg))
----------  ----------------  -----------------  -----------------
1           'Hello!'          'Hello! '          ' Hello!'        
2           'Good Bye'        'Good Bye '        ' Good Bye'      
3           '__Thank you__'   '__Thank you__'    '__Thank you__'  
sqlite> 

결과를 알아 보기 쉽게 quote 함수를 사용하여 받아온 값을 작은 따움표를 둘려싸서 표시하고 있다. 컬럼에 저장되는 문자열의 시작과 끝에 있는 공백을 제거된 것을 확인할 수 있다. (quote 함수에 대해서는 문자열을 작은 따옴표로 감싸기 (quote 함수)를 참조한다).

이번에는 trim 함수, ltrim 함수, rtrim 함수를 사용하여 msg 컬럼에 저장되는 값 중에서 처음과 끝에 있는 밑줄 (_)을 제거한 문자열을 받아온다.

select id, trim(msg, '_'), ltrim(msg, '_'), rtrim(msg, '_') from msgdb;
sqlite> select id, trim(msg, '_'), ltrim(msg, '_'), rtrim(msg, '_') from msgdb; 
id          trim(msg, '_')  ltrim(msg, '_')  rtrim(msg, '_')
----------  --------------  ---------------  ---------------
1            Hello!          Hello!           Hello!        
2            Good Bye        Good Bye         Good Bye      
3           Thank you       Thank you__      __Thank you    
sqlite> 

테이블에 저장되어 있는 마지막 데이터에서 컬럼에 저장되는 값의 시작과 끝의 밑줄(_)을 제거한 문자열이 표시되었다.

+ Recent posts