15.타입 함수

Edit

15.1타입 변환

15.1.1string

문법

string(표현식)
string(날짜표현식, 날짜형식)
string(날짜표현식, 날짜형식, 시간대)

임의의 표현식을 문자열로 변환합니다. 날짜 표현식과 날짜 형식을 입력하면 날짜표현식을 입력된 날짜형식의 문자열로 변환합니다. 시간대를 지정하지 않으면 로그프레소가 설치된 시스템의 로케일을 사용합니다.

시간대는 GMT+09, GMT+0900, GMT+09:00, GMT+9:00 형식 중 하나로 입력할 수 있습니다. 시간대 매개변수는 문자열 리터럴로 입력합니다. 문자로 된 시간대 약어를 지원하지만, 중의적인 의미를 가질 수 있으므로 주의해야 합니다. 가령 CST는 중국 표준시가 아니라 미국 중부 표준시입니다.

날짜형식은 아래와 같습니다:

표 15-1날짜 지시자

지시자

설명

예제

G

기원전/후

AD

y

연도

1996; 96

M

July; Jul; 07

w

년 단위 주

27

W

월 단위 주

2

d

년 단위 일

189

D

월 단위 일

10

F

요일 번호

2

E

요일

Tuesday; Tue

a

오전/오후

PM

H

시간 (0-23)

0

k

시간 (1-24)

24

K

오전/오후 시간 (0-11)

0

h

오전/오후 시간 (1-12)

12

m

30

s

55

S

밀리초

978

z

시간대 (일반 표기)

Pacific Standard Time; PST;

Z

시간대 (RFC 822 표기)

-0800

표 15-2시간대 약어 예시

약어

GMT 오프셋

설명

UTC

GMT+0

협정 세계시

KST

GMT+9

대한민국 표준시

CEST

GMT+2

중앙유럽 서머타임

MSK

GMT+3

모스크바 표준시

PST

GMT-7

태평양 표준시

EST

GMT-5

미국 동부 표준시

사용 예

string(1) => "1"
string(1.2) => "1.2"
string(true) => "true"
string(null) => null
string(now(),"yyyyMMddHHmmss") => "20140807164417"
string(date("20170329","yyyyMMdd"),"yyyy-MM-dd HH:mm:ssZ","GMT+08") => "2017-03-28 23:00:00+0800"

15.1.2date

문법

date(원본문자열, 포맷문자열, [로케일])

문자열을 날짜 타입으로 변환합니다. 표현식이 null이거나 빈 문자열인 경우 null을 반환합니다. 문자열 이외의 타입인 경우 문자열로 자동 변환 후 날짜 변환을 시도합니다.

원본 문자열

날짜 타입으로 변환할 원본 문자열 표현식

포맷 문자열

표 15-1 날짜 지시자를 사용하여 원본 문자열을 파싱하는데 사용할 포맷 문자열을 정의합니다.

로케일

ISO 639에 지정된 2자리 혹은 3자리 코드로 로케일을 지정합니다. 미지정 시 en으로 설정됩니다.

사용 예

date("2013-06-10 00:30:55.978", "yyyy-MM-dd HH:mm:ss.SSS") 
=> Mon Jun 10 00:30:55 KST 2013

15.1.3long

문법

long(표현식)

문자열을 64비트 정수로 변환합니다. 표현식이 null인 경우 null을 반환합니다. 문자열을 64비트 정수로 변환할 수 없는 경우에도 null을 반환합니다. IP 타입이 들어오는 경우 long으로 변환한 값을 반환합니다. 문자열 이외의 타입이 들어오는 경우 문자열로 자동 변환 후 64비트 정수 변환을 시도합니다.

사용 예

long("1234") => 1234
long(1234) => 1234
long(ip("0.0.0.1")) => 1
long(ip("192.168.0.1")) => 3232235521
long(null) => null
long("invalid") => null

15.1.4int

문법

int(표현식)

문자열을 정수로 변환합니다. 표현식이 null인 경우 null을 반환합니다. 문자열을 정수로 변환할 수 없는 경우에도 null을 반환합니다. IP 타입이 들어오는 경우 int으로 변환한 값을 반환합니다. Double, float 타입이 들어오면 정수로 변환합니다. 그 외의 타입이 들어오는 경우 문자열로 자동 변환 후 정수 변환을 시도합니다. 표현식이 배열인 경우, 배열의 각 요소를 정수로 변환합니다.

사용 예

int("1234") => 1234
int(1234) => 1234
int(ip("0.0.0.1")) => 1
int(ip("192.168.0.1")) => -1062731775
int(12345.6789) => 12345
int(null) => null
int("invalid") => null
int(array("1", "abc", "2", 3, array(4))) => [1, null, 2, 3, null]

15.1.5double

문법

double(표현식)

문자열을 64비트 배정도 실수로 변환합니다. 표현식이 null인 경우 null을 반환합니다. 실수 변환에 실패한 경우에는 null을 반환합니다. 표현식이 문자열 이외의 타입인 경우 문자열로 자동 변환 후 실수 변환을 시도합니다.

사용 예

double("1.2") => 1.2
double("0") => 0.0
double(0) => 0.0
double("invalid") => null
double(null) => null

15.1.6ip

문법

ip(표현식)

문자열 표현식을 IP로 변환합니다. 표현식이 null인 경우 null을 반환합니다. Long 타입이나 signed int 타입은 IP값으로 변환합니다. 유효하지 않은 포맷으로 IP 변환에 실패하는 경우 null을 반환합니다. 문자열 이외의 타입인 경우 문자열로 자동 변환 후 IP 변환을 시도합니다.

사용 예

ip("1.2.3.4") => /1.2.3.4
ip("::1") => /0:0:0:0:0:0:0:1
ip(4294967295) => /255.255.255.255
ip(-1062731775) => /192.168.0.1
ip("invalid") => null
ip(null) => null

15.1.7binary

문법

binary(문자열표현식 [, 인코딩])

문자열을 바이너리 값으로 변환합니다.

문자열 표현식

바이너리로 변환할 대상 문자열 표현식

인코딩

문자집합을 의미하는 상수 문자열, 생략 시 utf-8이 기본값으로 사용됩니다.

사용 예

binary("hello world") => 68656c6c6f20776f726c64
binary(null) => null

15.1.8array

문법

array(표현식1, 표현식2, …)

인자로 지정한 모든 표현식들을 평가하여 생성한 배열을 반환합니다.

사용 예

array(null) => [null]
array(1) => [1]
array("hello", "world") => ["hello", "world"]
array(21 * 2, "the answer to life, the universe, and everything") 
  => [42, "the answer to life, the universe, and everything"]

15.1.9flatten

문법

flatten(표현식)

표현식이 배열인 경우, 재귀적으로 중첩된 배열의 요소를 모두 꺼내어 단일 배열로 평탄하게 변환합니다. 그 외의 경우는 입력 값을 그대로 반환합니다. 일반적으로 strjoin를 사용하여 배열을 하나의 문자열로 병합하기 전에, 중첩된 배열 요소들을 중첩되지 않은 배열로 변환하는 용도로 사용합니다.

사용 예

flatten(array(1, array(2, 3), 4)) => [ 1, 2, 3, 4 ]

15.1.10unique

문법

unique(표현식)

표현식이 배열인 경우, 중복된 원소를 제거한 배열을 반환합니다. 이 때 반환되는 배열의 순서는 특정하게 보장되지 않습니다. 표현식이 단일 값인 경우, 하나의 원소만 포함한 배열을 반환합니다. 표현식이 null인 경우 null을 반환합니다.

사용 예

unique(array(1, 1, 2, "2")) => ["2", 1, 2]

15.1.11dict

문법

dict(키1, 값1, 키2, 값2, …)

키-값 페어 목록을 입력받아 생성된 map을 반환합니다. 키는 null이 아닌 문자열만 입력할 수 있으며, 값은 모든 타입 입력 가능합니다. map 특성상 키 값은 중복을 허용하지 않으며, dict() 함수에서 키를 중복으로 입력하면 값으로는 나중에 입력한 값이 세팅됩니다. 키-값 짝이 맞지 않으면, 즉 매개변수 개수가 홀수이면 쿼리 에러가 발생합니다.

사용 예

dict() => {}
dict("a", "aaa") => {"a":"aaa"}
dict("a", "aaa", "b", 1234, "c", ip("127.0.0.1"), "d", array(1,2,3), "e", date("20180101","yyyyMMdd") )
  => {"a":"aaa","b":1234,"c":"/127.0.0.1","d":[1,2,3],"e":"2018-01-01 00:00:00+0900"}

15.2타입 체크

15.2.1isnum

문법

isnum(표현식)

표현식이 숫자 타입(int, short, long, float, double)인 경우 true, 그렇지 않으면 false를 반환합니다. 표현식이 null인 경우 false를 반환합니다.

사용 예

isnum(1) => true
isnum(1.2) => true
isnum("string") => false
isnum(null) => false

15.2.2isstr

문법

isstr(표현식)

표현식이 문자열인 경우 true, 그렇지 않으면 false를 반환합니다. 표현식이 null인 경우 false를 반환합니다.

사용 예

isstr("string") => true
isstr(0) => false
isstr(null) => false

15.2.3isnull

문법

isnull(표현식)

표현식이 null인 경우 true, 그렇지 않으면 false를 반환합니다.

사용 예

isnull(null) => true
isnull(1) => false

15.2.4isnotnull

문법

isnotnull(표현식)

표현식이 null이 아닌 경우 true, 그렇지 않으면 false를 반환합니다.

사용 예

isnotnull(1) => true
isnotnull(null) => false

15.2.5typeof

문법

typeof(표현식)

주어진 표현식의 타입을 문자열 표현으로 반환합니다. 문자열인 경우 "string", 16비트 정수인 경우 "short", 32비트 정수인 경우 "int", 64비트 정수인 경우 "long", 32비트 단정도 소수점인 경우 "float", 64비트 배정도 소수점인 경우 "double", 불린인 경우 "bool", IPv4 주소인 경우 "ipv4", IPv6 주소인 경우 "ipv6", 날짜인 경우 "date", 맵인 경우 "map", null인 경우에는 null을 반환합니다.

사용 예

typeof(null) => null
typeof("sample") => "string"
typeof(1) => "int"
typeof(2147483648) => "long"
typeof(1.2) => "double"
typeof(ip("1.2.3.4")) => "ipv4"
typeof(ip("::1")) => "ipv6"
typeof(true) => "bool"
Count of comments [0]