이은호의 사업공부

Notion 수식 구문 및 함수 | Notion 도움말 – Notion (노션) 도움말 센터

Notion 수식은 다양한 속성 유형과 함수를 지원하며, 텍스트, 숫자, 날짜, 사람 등 여러 데이터에 대해 연산·논리·조건·문자열·수학·날짜·리스트 처리 등을 수행할 수 있다. 주요 연산자는 +, -, *, % 등이며, if, contains, replace, round, now 등 풍부한 내장 함수가 제공되어 복잡한 로직을 간단히 구현한다.

원비즈 Sep 8, 2026

수식으로 무엇을 하고 싶은지는 알지만 어떻게 작성해야 할지 모르시겠나요? Notion AI를 사용하여 수식을 만들고 편집할 수 있습니다. 자세히 알아보기 여기 →

Notion 수식에서는 다양한 속성과 함수를 사용할 수 있습니다. 아래에서 자세히 설명해 드릴게요.

수식은 거의 모든 속성 유형을 지원해요. 수식 유형은 속성 유형과 다르다는 것을 유의하세요.

속성 유형
예시
수식 유형
제목
prop("Title")prop("Title").length()
텍스트
텍스트
prop("Text")prop("Text").length()
텍스트
선택
prop("Priority") == "High"
텍스트
다중 선택
prop("Tags").length()prop("Tags").includes("Finance")
텍스트(리스트)
체크박스
prop("Checkbox")not prop("Checkbox")
부울
이메일, URL, 전화번호
!empty(prop("Phone"))!empty(prop("Email"))link("Call", "tel:" + prop("Phone"))
텍스트
고유 ID
prop("Task ID").split("-").first() ← Prefix
prop("Task ID").split("-").last() ← ID
텍스트
생성자, 편집자
prop("Created By").name()prop("Created By").email()
사람
사람
prop("Person")prop("Person").at(0).name()prop("Person").map(current.email())
사용자(리스트)
날짜,생성 일시,최종 편집 일시
prop("Due Date") > now()dateBetween(prop("Birthday"), now(), "days")
날짜
숫자
prop("Number") / 2pi() * prop("Radius") ^ 2
숫자
관계형
prop("Tasks").length()prop("Tasks").filter(current.prop("Status") !== "Done")
페이지(리스트)
롤업
prop("Purchases").length()prop("Average cost") * 12
숫자, 날짜 또는 리스트(유형 무관). 롤업에 따라 달라짐.

빌트인은 계산을 표기하는 데 도움이 되도록 언어에 기본 제공되는 특정 기호와 값입니다.

빌트인
예시
수학 연산자:+, -, *, %
2 * pi()"hello" + "world"
부울 값:true, false
truefalse
비교 연산자:==, >, >=, <, <=
123 == 123 = true"Notion" == "Motion" = false
논리 연산자:
and, or, not
and:true and falsetrue && falseand(true, false)or:true or falsetrue || falseor(true, false)not:not true!true
삼항 연산자:? :
X ? Y : Zif(X, Y, Z)와 같음

Notion 수식에서는 아래와 같은 함수를 지원합니다.

이름
설명
예시
if
조건이 TRUE이면 첫 번째 값을 반환하고 FALSE이면 두 번째 값을 반환합니다.
if(true, 1, 2) = 1if(false, 1, 2) = 2prop("Checked") == true ? "Complete" : "Incomplete"
ifs
첫 번째 TRUE 조건에 해당하는 값을 반환합니다. 여러 개의 중첩된 if() 문 대신 사용할 수 있습니다.
ifs(true, 1, true, 2, 3) = 1ifs(false, 1, false, 2, 3) = 3
empty
값이 비어 있으면 TRUE를 반환합니다. 0, “”, [] 기호는 비어 있는 것으로 간주합니다.
empty(0) = trueempty([]) = true
length
텍스트 또는 리스트 값의 길이를 반환합니다.
length("hello") = 5length([1, 2, 3]) = 3
substring
시작 색인(포함)부터 끝 색인(선택적, 제외)까지 텍스트에서 하위 문자열을 반환합니다.
substring("Notion", 0, 3) = "Not"substring("Notion", 3) = "ion"
값을 포함하는 데이터
값에 검색 문자열이 있으면 TRUE를 반환합니다.
contains("Notion", "ot") = true
test
값이 정규식과 일치하면 TRUE를, 일치하지 않으면 FALSE를 반환합니다.
test("Notion", "Not") = truetest("Notion", "\\d") = false
match
정규식의 모든 일치 항목을 리스트로 반환합니다.
match("Notion Notion", "Not") = ["Not", "Not"]match("Notion 123 Notion 456", "\\d+") = ["123", "456"]
replace
정규식의 첫 번째 일치 항목을 대체할 값으로 바꿉니다.
replace("Notion Notion", "N", "M") = "Motion Notion"
replaceAll
정규식의 모든 일치 항목을 대체할 값으로 바꿉니다.
replaceAll("Notion Notion", "N", "M") = "Motion Motion"replaceAll("Notion 123", "\\d", "") = "Notion"
lower
텍스트를 소문자로 변환합니다.
lower("NOTION") = "notion"
upper
텍스트를 대문자로 변환합니다.
upper("notion") = "NOTION"
repeat
주어진 횟수만큼 텍스트를 반복합니다.
repeat("0", 4) = "0000"repeat("~=", 10) = "~=~=~=~=~=~=~=~=~=~="
link
레이블 텍스트와 URL에서 하이퍼링크를 만듭니다.
link("Notion", "https://notion.so") = "Notion"
style
텍스트에 스타일과 색상을 추가합니다. 유효한 서식 스타일: "b"(굵게), "u"(밑줄), "i"(기울임꼴), "c"(코드), "s"(취소선). 유효한 색상: "gray", "brown", "orange", "yellow", "green", "blue", "purple", "pink", "red". 배경색을 설정하려면 색상에 "_background"를 추가하세요.
style("Notion", "b", "u") = "Notion" style("Notion", "blue", "gray_background")
unstyle
텍스트에서 서식 스타일을 제거합니다. 특정 스타일을 지정하지 않으면 모든 스타일이 제거됩니다.
unstyle("Text")unstyle("Text", "b")
format
텍스트 형식으로 값을 반환합니다.
format(1234) = "1234"format(now()) = "August 30, 2023 17:55"
add
두 숫자의 합을 반환합니다.
add(5, 10) = 155 + 10 = 15
subtract
두 숫자의 차를 반환합니다.
subtract(5, 10) = -55 - 10 = -5
multiply
두 숫자의 곱을 반환합니다.
multiply(5, 10) = 505 * 10 = 50
mod
첫 번째 수를 두 번째 수로 나누었을 때 나머지를 반환합니다.
mod(5, 10) = 55 % 10 = 5
pow
밑수를 지수만큼 거듭제곱한 결과를 반환합니다.
pow(5, 10) = 97656255 ^ 10 = 9765625
divide
두 숫자를 나눈 몫을 반환합니다.
divide(5, 10) = 0.55 / 10 = 0.5
min
인수 중 가장 작은 수를 반환합니다.
min(1, 2, 3) = 1min([1, 2, 3]) = 1
max
인수 중 가장 큰 수를 반환합니다.
max(1, 2, 3) = 3max([1, 2, 3]) = 3
sum
인수의 합을 반환합니다.
sum(1, 2, 3) = 6sum([1, 2, 3], 4, 5) = 15
중앙값
인수의 중간값을 반환합니다.
median(1, 2, 4) = 2median([1, 2, 3], 4) = 2.5
평균
인수의 산술 평균을 반환합니다.
mean(1, 2, 3) = 2mean([1, 2, 3], 4, 5) = 3
abs
수의 절댓값을 반환합니다.
abs(10) = 10abs(-10) = 10
round
숫자를 가장 가까운 정수로 반올림한 값을 반환합니다. 하나 또는 두 개의 인수를 지원합니다. 두 개의 인수를 사용하는 경우, 첫 번째는 값이고 두 번째는 반올림할 소수점 자릿수입니다.
round(0.4) = 0round(-0.6) = -1round(1.234, 0) = 1round(1.234, 2) = 1.23round(1234, -2) = 1200
ceil
지정한 수보다 크거나 같은 수 중 가장 작은 정수를 반환합니다.
ceil(0.4) = 1ceil(-0.6) = 0
floor
지정한 수보다 작거나 같은 수 중 가장 큰 정수를 반환합니다.
floor(0.4) = 0floor(-0.6) = -1
sqrt
수의 양의 제곱근을 반환합니다.
sqrt(4) = 2sqrt(7) = 2.6457513110645907
cbrt
수의 세제곱근을 반환합니다.
cbrt(9) = 2.080083823051904cbrt(64) = 4
exp
e^x를 반환합니다. 여기서 x는 인수이고, e는 자연로그의 밑인 오일러 상수(2.718…)입니다.
exp(1) = 2.718281828459045exp(-1) = 0.36787944117144233
ln
수의 자연로그를 반환합니다.
ln(2.718281828459045) = 1ln(10) = 2.302585092994046
log10
수의 밑이 10인 로그를 반환합니다.
log10(10) = 1log10(100000) = 5
log2
수의 밑이 2인 로그를 반환합니다.
log2(4) = 2log2(1024) = 10
표지판
수가 양수이면 1을, 음수이면 -1을, 0이면 0을 반환합니다.
sign(-10) = -1sign(10) = 1
pi
원주율을 반환합니다.
pi() = 3.141592653589793
e
자연로그의 밑을 반환합니다.
e() = 2.718281828459045
toNumber
텍스트에서 숫자를 구문 분석합니다.
toNumber("2") = 2toNumber(now()) = 1693443300000toNumber(true) = 1
now
현재 날짜와 시간을 반환합니다.
now() = @August 30, 2023 5:55 PM
오늘
시간을 제외한 현재 날짜를 반환합니다.
today() = @2024년 4월 19일
minute
날짜의 분을 반환합니다(0~59).
minute(parseDate("2023-07-10T17:35Z")) = 35
hour
날짜의 시간을 반환합니다(0~23).
hour(parseDate("2023-07-10T17:35Z")) = 17
day
날짜의 요일을 1(월요일)부터 7(일요일)까지의 숫자로 반환합니다.
day(parseDate("2023-07-10T17:35Z")) = 1
date
날짜의 일을 반환합니다(1~31).
date(parseDate("2023-07-10T17:35Z")) = 10
week
날짜가 한 해의 몇 번째 주인지 ISO 형식으로 반환합니다(1~53).
week(parseDate("2023-01-02")) = 1
month
날짜의 월을 반환합니다(1-12).
month(parseDate("2023-07-10T17:35Z")) = 7
year
날짜의 연도를 반환합니다.
year(now()) = 2023
dateAdd
날짜에 시간을 추가합니다. 사용 가능한 단위 인수: "years", "quarters", "months", "weeks", "days", "hours", "minutes"
dateAdd(now(), 1, "days") = @August 31, 2023 5:55 PMdateAdd(now(), 2, "months") = @October 30, 2023 5:55 PMdateAdd(now(), 3, "years") = @August 30, 2026 5:55 PM
dateSubtract
날짜에서 시간을 뺍니다. 사용 가능한 단위 인수: "years", "quarters", "months", "weeks", "days", "hours", "minutes"
dateSubtract(now(), 1, "days") = @August 29, 2023 5:55 PMdateSubtract(now(), 2, "months") = @June 30, 2023 5:55 PMdateSubtract(now(), 3, "years") = @August 30, 2020 5:55 PM
dateBetween
두 날짜의 차를 반환합니다. 사용 가능한 단위 인수: "years", "quarters", "months", "weeks", "days", "hours", "minutes"
dateBetween(now(), parseDate("2022-09-07"), "days") = 357dateBetween(parseDate("2030-01-01"), now(), "years") = 6
dateRange
시작 날짜와 종료 날짜로 구성된 기간을 반환합니다.
dateRange(prop("Start Date"), prop("End Date")) = @September 7, 2022 → September 7, 2023
dateStart
기간의 시작일을 반환합니다.
dateStart(prop("Date Range")) = @September 7, 2022dateBetween(dateStart(prop("Date Range")), dateEnd(prop("Date Range")), "days") = -365
dateEnd
기간의 종료일을 반환합니다.
dateEnd(prop("Date range")) = @September 7, 2023dateBetween(dateEnd(prop("Date Range")), dateStart(prop("Date Range")), "days") = 365
timestamp
1970년 1월 1일 이후로 경과한 시간을 밀리초 단위로 나타내는 현재의 Unix 타임스탬프를 반환합니다.
timestamp(now()) = 1693443300000
fromTimestamp
주어진 Unix 타임스탬프에서 날짜를 반환합니다. 타임스탬프는 1970년 1월 1일 이후로 경과한 밀리초를 나타냅니다. 참고: 반환되는 날짜에는 초와 밀리초가 포함되지 않습니다.
fromTimestamp(1689024900000) = @July 10, 2023 2:35 PM
formatDate
사용자가 지정한 형식의 문자열로 날짜 형식을 지정합니다. 날짜의 각 부분을 나타내기 위해 연도는 "YYYY", 월은 "MM", 일은 "DD", 시간은 "h" , 분은 "mm" 텍스트를 형식 문자열에 포함할 수 있습니다.
formatDate(now(), "MMMM D, Y") = "August 30, 2023"formatDate(now(), "MM/DD/YYYY") = "08/30/2023"formatDate(now(), "h:mm A") = "17:55 PM"
formatNumber
"Revenue: " + formatNumber(prop("Number"), "usd", 0).style("green")
parseDate
ISO 8601 표준에 따라 구문 분석된 날짜를 반환합니다.
parseDate("2022-01-01") = @January 1, 2022parseDate("2022-01-01T00:00Z") = @December 31, 2021 4:00 PM
name
사람의 이름을 반환합니다.
name(prop("Created By"))prop("Pioneers").map(name(current)).join(", ") = "Grace Hopper, Ada Lovelace"
이메일
사람의 이메일 주소를 반환합니다.
email(prop("Created By"))prop("People").map(email(current)).join(", ")
at
리스트에서 지정된 인덱스의 값을 반환합니다.
at([1, 2, 3], 1) = 2
first
리스트의 첫 번째 항목을 반환합니다.
first([1, 2, 3]) = 1
last
리스트의 마지막 항목을 반환합니다.
last([1, 2, 3]) = 3
slice
제공된 시작 색인(포함)부터 끝 색인(선택적, 제외)까지 리스트의 항목을 반환합니다.
slice([1, 2, 3], 1, 2) = [2]slice(["a", "b", "c"], 1) = ["b", "c"]
concat
여러 리스트의 연결을 반환합니다.
concat([1, 2], [3, 4]) = [1, 2, 3, 4]concat(["a", "b"], ["c", "d"]) = ["a", "b", "c", "d"]
sort
리스트를 정렬된 순서로 반환합니다.
sort([3, 1, 2]) = [1, 2, 3]
reverse
역순의 리스트를 반환합니다.
reverse(["green", "eggs", "ham"]) = ["ham", "eggs", "green"]
join
각 값 사이에 조이너(joiner)를 포함하여 리스트의 값을 반환합니다.
join(["a", "b", "c"], ", ") = "a, b, c"join(["dog", "go"], "") = "doggo"
split
텍스트 입력을 구분 기호로 분할하여 만들어진 값의 리스트를 반환합니다.
split("apple,pear,orange", ",") = ["apple", "pear", "orange"]
unique
입력 리스트에서 고유값의 리스트를 반환합니다.
unique([1, 1, 2]) = [1, 2]
includes
리스트에 지정된 값이 있으면 TRUE를, 없으면 FALSE를 반환합니다.
includes(["a", "b", "c"], "b") = trueincludes([1, 2, 3], 4) = false
find
리스트에서 조건이 TRUE로 계산되는 첫 번째 항목을 반환합니다.
find(["a", "b", "c"], current == "b") = "b"find([1, 2, 3], current > 100) = Empty
findIndex
리스트에서 조건이 TRUE인 첫 번째 항목의 인덱스를 반환합니다.
findIndex(["a", "b", "c"], current == "b") = 1findIndex([1, 2, 3], current > 100) = -1
filter
리스트에서 조건이 TRUE인 값을 반환합니다.
filter([1, 2, 3], current > 1) = [2, 3]filter(["a", "b", "c"], current == "a") = ["a"]
some
리스트의 항목 중 주어진 조건을 충족하는 항목이 있으면 TRUE를, 없으면 FALSE를 반환합니다.
some([1, 2, 3], current == 2) = truesome(["a", "b", "c"], current.length > 2) = false
every
리스트의 모든 항목이 주어진 조건을 충족하면 TRUE를, 아니면 FALSE를 반환합니다.
every([1, 2, 3], current > 0) = trueevery(["a", "b", "c"], current == "b") = false
map
입력 리스트의 모든 항목에 표현식을 호출한 결과가 채워진 리스트를 반환합니다.
map([1, 2, 3], current + 1) = [2, 3, 4]map([1, 2, 3], current + index) = [1, 3, 5]
flat
리스트의 리스트를 하나의 리스트로 획일화합니다.
flat([1, 2, 3]) = [1, 2, 3]flat([[1, 2], [3, 4]]) = [1, 2, 3, 4]
id
현재 페이지의 ID를 반환합니다. 페이지 ID가 없는 경우, 수식이 있는 페이지의 ID를 반환합니다.
id()id(prop("Relation").first())
equal
두 값이 같으면 TRUE를, 다르면 FALSE를 반환합니다.
equal(1, 1) = true"a" == "b" = false
unequal
두 값이 같으면 FALSE를, 다르면 TRUE를 반환합니다.
unequal(1, 2) = true"a" != "a" = false
let
변수에 값을 할당하고 해당 변수를 사용하여 표현식을 계산합니다.
let(person, "Alan", "Hello, " + person + "!") = "Hello, Alan!"let(radius, 4, round(pi() * radius ^ 2)) = 50
lets
여러 변수에 값을 할당하고 해당 변수를 사용하여 표현식을 계산합니다.
lets(a, "Hello", b, "world", a + " " + b) = "Hello world"lets(base, 3, height, 8, base * height / 2) = 12
trim
텍스트의 시작과 끝에서 공백을 제거합니다.
" notion ".trim() = "notion"

추천 글