blob: b9f9c7732692c5fe508f8084cb7790c2295caccb [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- Bugyard widget embed -->
<script type="text/javascript">
!function(){
if("function" != typeof window.bugyard){
var a = function(){ a.c(arguments) };
a.q = [], a.c = function(b){ a.q.push(b) };
window.bugyard = a;
var b = document.createElement("script");
b.setAttribute("data-bugyard", "610961912c35ff001493163a");
b.setAttribute("async", "async");
b.setAttribute("defer", "defer");
b.setAttribute("src", "/assets/js/bugyard.min.js");
document.getElementsByTagName("head")[0].appendChild(b);
}
}();
window.bugyard("hideButton");
</script>
<!-- Bugyard widget embed -->
<link rel="preload" href='/assets/js/code-tabs.js?1' as="script" crossorigin>
<link rel="preload" href='/assets/js/page-nav.js' as="script" crossorigin>
<link rel="preload" href='/assets/js/docs-menu.js?20201005' as="script" crossorigin>
<style>:root{--gg-red:#ec1c24;--gg-orange:#ec1c24;--gg-orange-dark:#bc440b;--gg-orange-filter:invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);--gg-dark-gray:#333333;--orange-line-thickness:3px;--block-code-background:rgba(241, 241, 241, 20%);--inline-code-background:rgba(241, 241, 241, 90%);--padding-top:25px;--link-color:#ec1c24;--body-background:#fcfcfc}header{min-height:var(--header-height);background:#fff;box-shadow:0 4px 10px 0 #eee,0 0 4px 0 #d5d5d5;z-index:1}header>.container{display:grid;grid-template-columns:auto auto 1fr auto auto auto;grid-template-areas:'left-toggle home nav ver api search lang';grid-template-rows:40px;flex-direction:row;align-items:center;justify-content:flex-start;padding:12px 20px;max-width:1400px;margin:0 auto}header nav>ul{padding:0;margin:0;list-style:none;display:inherit}header .dropdown{display:none;position:fixed;top:calc(var(--header-height) - 12px);width:auto;background:#fff;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);border-radius:4px;padding-top:10px;padding-bottom:12px;z-index:2}header .dropdown li{display:flex}header .dropdown a{color:grey!important;font-size:16px;padding-top:5px;padding-bottom:4px}header .menu{border:none;background:0 0;width:40px;height:40px;margin-right:12px;grid-area:left-toggle}header .menu img{width:18px;height:12px}header .search-close,header .top-nav-toggle{background:0 0;border:none;padding:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;color:var(--gg-dark-gray);font-size:26px}header .search-toggle{grid-area:search}header .top-nav-toggle{grid-area:top-toggle}header .home{grid-area:home;margin-right:auto}header .home img{height:36px}header #api-docs{grid-area:api;margin:0;display:flex}header #api-docs .dropdown{padding:.5em 0}header #api-docs a{padding:9px 14px;color:var(--gg-dark-gray)!important;text-decoration:none;white-space:nowrap}header #api-docs .dropdown-item a{font-weight:400;display:block;width:100%;min-width:150px}header #lang-selector li{list-style:none;display:flex;padding:9px 14px}header #lang-selector li a{display:flex;color:#000;align-items:center}header #lang-selector li a span{font-size:10px;margin-left:5px}header #lang-selector li a img{width:25px}header #lang-selector li .dropdown{margin-left:-70px}header #lang-selector li .dropdown .dropdown-item{padding:0 1em;margin-bottom:8px}header #lang-selector li .dropdown .dropdown-item a span{font-size:14px}header .search{margin-left:auto;margin-right:20px;grid-area:search}header .search input[type=search]{color:var(--gg-dark-gray);background:rgba(255,255,255,.8);border:1px solid #ccc;padding:10px 15px;font-family:inherit;max-width:148px;height:37px;font-size:14px;-webkit-appearance:unset;appearance:unset}header #version-selector{list-style:none;grid-area:ver;line-height:28px;border-radius:0;margin-right:10px;border:none;color:var(--gg-dark-gray);padding:5px 16px 5px 10px;white-space:nowrap;font-size:14px;width:auto;text-align:right;box-sizing:border-box;text-align-last:right;-moz-appearance:none;-webkit-appearance:none;appearance:none;direction:rtl}header #version-selector option{direction:ltr}header>nav{grid-area:nav;font-size:18px;display:flex;flex-direction:row;margin:0 20px}header #lang-selector{grid-area:lang}header .search-close{margin-right:10px}@media (max-width:600px){header .search{margin-right:5px}header .search input[type=search]{max-width:110px}}header:not(.narrow-header) .search-close,header:not(.narrow-header) .top-nav-toggle{display:none}@media (max-width:670px){header>.container{grid-template-columns:auto 1fr auto;grid-template-areas:'left-toggle home search' 'ver api lang'}header #lang-selector li{justify-content:flex-end}}pre,pre.rouge{padding:8px 15px;background:var(--block-code-background)!important;border-radius:5px;border:1px solid #e5e5e5;overflow-x:auto;min-height:36px;line-height:18px;color:#545454}code{color:#545454}pre.rouge code{background:0 0!important}:not(pre)>code{background:var(--inline-code-background);padding:.1em .5em;background-clip:padding-box;border-radius:3px;color:#545454;font-size:90%}.listingblock .content{position:relative}.highlight{color:#586e75}.highlight .c1{color:#657b83}.highlight .nt{color:#b58900}.highlight .o{color:#93a1a1}.highlight .k{color:#6c71c4}.highlight .kt{color:#cb4b16}.highlight .s,.highlight .s1{color:#859900}.highlight .nc{color:#b58900}.highlight .na{color:#268bd2}body{font-family:'Open Sans',sans-serif}h1,h2{color:#000;font-weight:400;font-family:'Open Sans'}h1{font-size:36px;line-height:40px}a{text-decoration:none;color:var(--link-color)}section{color:#545454}.admonitionblock .icon .title{display:none}body{--header-height:64px;--promotion-bar-height:35px;--footer-height:104px;--footer-gap:60px;padding:0;margin:0;display:flex;flex-direction:column;min-height:100vh;background-color:var(--body-background);font-family:'Open Sans',sans-serif}body>section{flex:1}header{position:-webkit-sticky;position:sticky;top:0;z-index:2}*{box-sizing:border-box}@media (max-width:670px){body{--header-height:97px}}.left-nav{padding:10px 20px;width:289px;overflow-y:auto;top:calc(var(--header-height) + var(--promotion-bar-height));height:calc(100vh - var(--header-height) - var(--promotion-bar-height));font-family:'Open Sans';padding-top:var(--padding-top);background-color:var(--body-background)}.left-nav li{list-style:none}.left-nav a,.left-nav button{text-decoration:none;color:#757575;font-size:16px;display:inline-flex;width:100%;margin:2px 0;padding:.25em .375em;background:0 0;border:none;font:inherit;text-align:left}.left-nav a.active{color:var(--link-color)}.left-nav .nav-group{margin-left:6px;font-size:14px}.left-nav nav{border-left:2px solid #ddd;margin-bottom:5px}.left-nav nav.collapsed{display:none}.left-nav nav>li>a,.left-nav nav>li>button{padding-left:20px;text-align:left}.left-nav nav>li>a.active{border-left:var(--orange-line-thickness) solid var(--active-color);padding-left:calc(20px - var(--orange-line-thickness))}.left-nav nav.sub_pages{border:none}.left-nav nav.sub_pages a{padding-left:32px}.left-nav .state-indicator{margin-left:auto;margin-top:5px;width:6.2px;height:10px;flex:0 0 auto;filter:invert(49%) sepia(4%) saturate(5%) hue-rotate(23deg) brightness(92%) contrast(90%)}.left-nav button.expanded .state-indicator{transform:rotate(90deg)}.right-nav{width:289px;padding:12px 26px;overflow-y:auto;height:calc(100vh - var(--header-height));top:0;position:-webkit-sticky;position:sticky;display:flex;flex-direction:column;font-family:'Open sans';padding-top:var(--padding-top);background-color:#fff}.right-nav ul{list-style:none;padding:0;margin:0}.right-nav li{padding:0}.right-nav a{--border-width:0px;font-size:14px;color:#757575;padding-left:calc(15px * var(--nesting-level) + 8px - var(--border-width));margin:.3em 0;display:inline-block}.right-nav .sectlevel1{border-left:2px solid #ddd}.right-nav .sectlevel1{--nesting-level:0}.right-nav .sectlevel2{--nesting-level:1}.right-nav .sectlevel3{--nesting-level:2}@media (max-width:1200px){.right-nav{width:230px}}.right-nav footer{font-size:12px;padding:calc(var(--footer-gap) * .3) 0 5px;text-align:left;margin:auto 0 0}section.page-docs{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:100%;grid-template-areas:'left-nav content right-nav';line-height:20px;max-width:1440px;margin:auto;width:100%}section.page-docs>article{border-left:1px solid #eee;background-color:#fff;padding:0 50px 30px;grid-area:content;overflow:hidden;font-family:sans-serif;font-size:16px;color:#545454;line-height:1.6em}section.page-docs>article h1,section.page-docs>article h2{font-family:'Open Sans'}@media (max-width:800px){section.page-docs>article{padding-left:15px;padding-right:15px}}section.page-docs .edit-link{position:relative;top:10px;right:10px;float:right;padding-top:calc(var(--header-height) + var(--padding-top));margin-top:calc((-1 * var(--header-height)))}section.page-docs h1,section.page-docs h2{margin-bottom:0}section.page-docs h2[id]{margin-top:var(--margin-top);margin-bottom:calc(var(--margin-top) * .5);z-index:-1}section.page-docs .title{font-style:italic}section.page-docs h2[id]{--margin-top:1.2em}.left-nav{bottom:0;position:-webkit-sticky;position:sticky}.left-nav{grid-area:left-nav}.right-nav{grid-area:right-nav}.left-nav__overlay{display:none;background:rgba(0,0,0,.5);z-index:1;position:fixed;top:var(--header-height);bottom:0;left:0;right:0}@media (max-width:990px){body:not(.hide-left-nav) .left-nav__overlay{display:block}nav.left-nav{background:#fafafa;grid-area:left-nav;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);min-height:calc(100vh - var(--header-height));max-height:calc(100vh - var(--header-height));position:fixed;bottom:0;top:var(--header-height);z-index:2}section.page-docs>article{grid-column-start:left-nav;grid-column-end:content;grid-row:content}}@media (max-width:800px){nav.right-nav{display:none}}:target:before{content:"";display:block;margin-top:calc(var(--header-height) * -1);height:var(--header-height);width:1px}@media (min-width:600px) and (max-width:900px){:target:before{content:"";display:block;width:1px;margin-top:-150px;height:150px}}
#header #promotion-bar { background-color: #333333; padding: 8px; }
#header #promotion-bar p { font-size: 14px; line-height: 1.4em; font-weight: 600; padding: 0; margin: 0; color: #f0f0f0; text-align: center;}
#header #promotion-bar p a { color: #FCB903; } </style>
<meta name="ignite-version" content="3.1.0" />
<title>Supported Operators and Functions | Ignite Documentation</title>
<link rel="canonical" href="/docs/latest/sql-reference/operators-and-functions" />
<link rel="shortcut icon" href="/favicon.ico">
<meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'>
<link rel="preload" as="style" href="/assets/css/fonts.css" />
<link rel="stylesheet" href="/assets/css/fonts.css" media="print" onload="this.media='all'">
<noscript>
<link rel="stylesheet" href="/assets/css/fonts.css">
</noscript>
<link href="/docs/pagefind/pagefind-ui.css" rel="stylesheet">
<script src="/docs/pagefind/pagefind-ui.js"></script>
<script>
window.addEventListener('DOMContentLoaded', () => {
new PagefindUI({
element: "#search",
showSubResults: true,
showImages: false,
});
});
</script>
<script src="/assets/js/mermaid.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
const blocks = document.querySelectorAll('.mermaid');
if (blocks.length) {
mermaid.initialize({ startOnLoad: false });
mermaid.run();
}
});
</script>
<script>
// AnchorJS - v4.2.0 - 2019-01-01
// https://github.com/bryanbraun/anchorjs
// Copyright (c) 2019 Bryan Braun; Licensed MIT
!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"î§‹",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(e=p(A)).length)return this;for(function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o<e.length;o++)if(this.hasAnchorJSLink(e[o]))d.push(o);else{if(e[o].hasAttribute("id"))n=e[o].getAttribute("id");else if(e[o].hasAttribute("data-anchor-id"))n=e[o].getAttribute("data-anchor-id");else{for(c=r=this.urlify(e[o].textContent),a=0;void 0!==s&&(c=r+"-"+a),a+=1,-1!==(s=i.indexOf(c)););s=void 0,i.push(c),e[o].setAttribute("id",c),n=c}n.replace(/-/g," "),(h=document.createElement("a")).className="anchorjs-link "+this.options.class,h.setAttribute("aria-label",this.options.ariaLabel),h.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(h.title=this.options.titleText),u=document.querySelector("base")?window.location.pathname+window.location.search:"",u=this.options.base||u,h.href=u+"#"+n,"always"===l&&(h.style.opacity="1"),"î§‹"===this.options.icon&&(h.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(h.style.lineHeight="inherit")),"left"===this.options.placement?(h.style.position="absolute",h.style.marginLeft="-1em",h.style.paddingRight="0.5em",e[o].insertBefore(h,e[o].firstChild)):(h.style.paddingLeft="0.375em",e[o].appendChild(h))}for(o=0;o<d.length;o++)e.splice(d[o]-o,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,i=p(A),n=0;n<i.length;n++)(t=i[n].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(i[n]))&&this.elements.splice(e,1),i[n].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){return this.options.truncate||f(this.options),A.trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}});
</script>
</head>
<body>
<header>
<!--#include virtual="/includes/promotion_banner.html" -->
<div class="container">
<button type='button' class='menu' title='Docs menu'>
<img src="/assets/images/menu-icon.svg" width="18" height="12" alt="menu icon" />
</button>
<div class='home'>
<a href="/" class='home' title='Apache Ignite home'>
<img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" height="36" >
</a>
</div>
<select id="product-selector">
<option value="/docs/ignite2/latest" >Ignite 2</option>
<option value="/docs/ignite3/latest"selected>Ignite 3</option>
</select>
<select id="version-selector">
<option value="3.1.0">3.1.0</option>
</select>
<nav id="api-docs"><ul>
<li><a href="#">APIs</a>
<nav class='dropdown'>
<ul>
<li class="dropdown-item"><a href="/releases/ignite3/3.1.0/javadoc/">Java</a></li>
<li class="dropdown-item"><a href="/releases/ignite3/3.1.0/dotnetdoc/">C#/.NET</a></li>
<li class="dropdown-item"><a href="/releases/ignite3/3.1.0/cppdoc/">C++</a></li>
<li class="dropdown-item"><a href="/releases/ignite3/3.1.0/openapi.yaml">OpenAPI</a></li>
</ul>
</nav>
</li>
<li><a href="#">Examples</a>
<nav class="dropdown">
<ul>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/examples" target="_blank" rel="noopener" title="Apache Ignite Java examples">Java</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/examples" target="_blank" rel="noopener" title="Apache Ignite C#/.NET examples">C#/.NET</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/cpp/examples" target="_blank" rel="noopener" title="Apache Ignite C++ examples">C++</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/python/examples" target="_blank" rel="noopener" title="Apache Ignite Python examples">Python</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/nodejs/examples" target="_blank" rel="noopener" title="Apache Ignite NodeJS examples">NodeJS</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/php/examples" target="_blank" rel="noopener" title="Apache Ignite PHP examples">PHP</a></li>
</ul>
</nav>
</li></ul>
</nav>
<div id="search-button"></div>
<nav id="lang-selector"><ul>
<li><a href="#"><img src="/assets/images/icon_lang_en_75x75.jpg" alt="English language icon" width="25" height="25" /><span>â–¼</span></a>
<nav class="dropdown">
<li class="dropdown-item"><a href="/docs/latest/" ><img src="/assets/images/icon_lang_en_75x75.jpg" alt="English language icon" width="25" height="25" /><span>English</span></a></li>
<li class="dropdown-item"><a href="https://www.ignite-service.cn/doc/java/" target="_blank" rel="noopener"><img src="/assets/images/icon_lang_cn_75x75.jpg" width="25" height="25" alt="Chinese language icon" /><span>Chinese</span></a></li>
</nav>
</li></ul>
</nav>
<button type='button' class='top-nav-toggle'>â‹®</button>
</div>
<div id="search-wrapper">
<div id="search"></div>
</div>
</header>
<link rel="stylesheet" href="/assets/css/docs.css">
<section class='page-docs'>
<nav class='left-nav' data-swiftype-index='false'>
<li>
<a href="/docs/ignite3/latest/index" class='' >About Apache Ignite 3</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/installation/installing-using-zip"
class=''
>Installing Using ZIP Archive</a>
</li>
<li>
<a href="/docs/ignite3/latest/installation/deb-rpm"
class=''
>Installing DEB or RPM package</a>
</li>
<li>
<a href="/docs/ignite3/latest/installation/installing-using-docker"
class=''
>Installing Docker</a>
</li>
<li>
<a href="/docs/ignite3/latest/installation/migration-from-ai3-1"
class=''
>Migration From Ignite 3.0</a>
</li>
<li>
<button
type='button'
class='collapsed '>Migration From Ignite 2<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/installation/migration-from-ai2/config" class=''>Configuration Migration</a></li>
<li><a href="/docs/ignite3/latest/installation/migration-from-ai2/persistent-migration" class=''>Persistent Data Migration</a></li>
<li><a href="/docs/ignite3/latest/installation/migration-from-ai2/ai2-functions" class=''>SQL Function Comparison</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Getting Started<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/quick-start/getting-started-guide"
class=''
>Quick Start</a>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/start-cluster"
class=''
>Start Ignite 3 Cluster</a>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/explore-sql"
class=''
>Explore SQL Capabilities</a>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/persist-data"
class=''
>Persist Your Data</a>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/java-api"
class=''
>Use Java API</a>
</li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/embedded-mode" class='' >Embedded Mode</a>
</li>
<li>
<a href="/docs/ignite3/latest/ignite-cli-tool" class='' >Ignite CLI Tool</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Developers Guide<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/developers-guide/table-api"
class=''
>Table API</a>
</li>
<li>
<button
type='button'
class='collapsed '>Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/developers-guide/clients/overview" class=''>Overview</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/java" class=''>Java Clients</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/dotnet" class=''>.NET Clients</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/cpp" class=''>C++ Clients</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/python" class=''>Python Clients</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/ado" class=''>ADO.NET Integration</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/linq" class=''>.NET LINQ Queries</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/jdbc-driver" class=''>JDBC Driver</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/developers-guide/sql/calcite-based-sql-engine" class=''>Introduction</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/sql-api" class=''>SQL API</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/jdbc-driver" class=''>JDBC Driver</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/odbc-driver" class=''>ODBC Driver</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/connection-string" class=''>ODBC Connection String</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/querying-modifying-data" class=''>Querying and Modifying Data</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/specification" class=''>Standard Conformance</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/java-to-tables"
class=''
>Tables from Java Classes</a>
</li>
<li>
<button
type='button'
class='collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/developers-guide/compute/compute" class=''>Compute API</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/compute/serialization" class=''>Serialization</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/transactions"
class=''
>Transactions</a>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/data-streamer"
class=''
>Data Streaming</a>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/code-deployment/code-deployment"
class=''
>Code Deployment</a>
</li>
<li>
<button
type='button'
class='collapsed '>Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/developers-guide/events/overview" class=''>Overview</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/events/events-list" class=''>Events List</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/rest/rest-api"
class=''
>REST API</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Administrator's Guide<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<button
type='button'
class='collapsed '>Ignite Configuration<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/config/node-config" class=''>Node Configuration Parameters</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/config/cluster-config" class=''>Cluster Configuration Parameters</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/config/cli-config" class=''>CLI Configuration</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Distributed Storage<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/storage/storage-overview" class=''>Storage Overview</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/storage-profiles" class=''>Storage Profiles</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/data-partitions" class=''>Data Partitions</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/distribution-zones" class=''>Distribution Zones</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Storage Engines<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/storage-engines" class=''>Storage Engines Overview</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/aipersist" class=''>AIPersist Engine</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/rocksdb" class=''>RocksDB Engine</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/aimem" class=''>AIMem Engine</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/lifecycle"
class=''
>Cluster Lifecycle</a>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/colocation"
class=''
>Data Colocation</a>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/disaster-recovery"
class=''
>Disaster Recovery for Partitions</a>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/system-groups-recovery"
class=''
>Disaster Recovery for System Groups</a>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/cluster-security"
class=''
>Cluster Security</a>
</li>
<li>
<button
type='button'
class='collapsed '>Security and Authentication<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/security/ssl-tls" class=''>SSL/TLS</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/security/authentication" class=''>Authentication</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Metrics and Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/metrics/configuring-metrics" class=''>Configuring Metrics</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/metrics/metrics-list" class=''>Metrics List</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/metrics/system-views" class=''>System Views</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/handling-exceptions"
class=''
>Handling Exceptions</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle expanded '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group expanded'>
<li>
<a href="/docs/ignite3/latest/sql-reference/ddl"
class=''
>Data Definition Language (DDL)</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/dml"
class=''
>Data Manipulation Language (DML)</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/transactions"
class=''
>Transactions</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/distribution-zones"
class=''
>Distribution Zones</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/data-types"
class=''
>Data Types</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/operators-and-functions"
class='active'
>Supported Operators and Functions</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/operational-commands"
class=''
>Operational Commands</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/grammar-reference"
class=''
>Grammar Reference</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/keywords"
class=''
>Keywords</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/sql-conformance"
class=''
>SQL Conformance</a>
</li>
<li>
<button
type='button'
class='collapsed '>Explain Statement<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/sql-reference/explain-statement" class=''>Explain Statement</a></li>
<li><a href="/docs/ignite3/latest/sql-reference/explain-operators-list" class=''>List Of Operators</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>SQL Performance Tuning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/sql-tuning/sql-tuning"
class=''
>SQL Performance Tuning</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-tuning/using-explain"
class=''
>Improving Queries</a>
</li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/general-tips" class='' >General Configuration Tips</a>
</li>
<li>
<a href="/docs/ignite3/latest/glossary/glossary" class='' >Glossary</a>
</li>
</nav>
<div class="left-nav__overlay"></div>
<article data-swiftype-index='true'>
<a class='edit-link' href="https://github.com/apache/ignite-3/tree/main/docs/_docs/sql-reference/operators-and-functions.adoc" target="_blank">Edit</a>
<h1>Supported Operators and Functions</h1>
<div id="preamble">
<div class="sectionbody">
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
For more information on functions supported by Apache Calcite, see the <a href="https://calcite.apache.org/docs/reference.html#operators-and-functions" target="_blank" rel="noopener">product documentation</a>.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="aggregate-functions">Aggregate Functions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="avg">AVG</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">AVG</span><span class="p">(</span> <span class="p">[</span> <span class="k">ALL</span> <span class="o">|</span> <span class="k">DISTINCT</span> <span class="p">]</span> <span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the average (arithmetic mean) of numeric across all input values. When used, the type of data will be changed in the following way:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Input type</th>
<th class="tableblock halign-left valign-top">Result type</th>
<th class="tableblock halign-left valign-top">Minimum scale</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DECIMAL</code>, <code>BIGINT</code>, <code>INTEGER</code>, <code>SMALLINT</code>, <code>TINYINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DECIMAL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DOUBLE</code>, <code>REAL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>DOUBLE</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="count">COUNT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">COUNT</span><span class="p">(</span> <span class="p">[</span> <span class="k">ALL</span> <span class="o">|</span> <span class="k">DISTINCT</span> <span class="p">]</span> <span class="n">value</span> <span class="p">[,</span> <span class="n">value</span> <span class="p">]</span><span class="o">*</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of input rows for which value is not null (wholly not null if value is composite).</p>
</div>
</div>
<div class="sect2">
<h3 id="max">MAX</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">MAX</span><span class="p">(</span> <span class="p">[</span> <span class="k">ALL</span> <span class="o">|</span> <span class="k">DISTINCT</span> <span class="p">]</span> <span class="n">value</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the maximum value across all input values.</p>
</div>
</div>
<div class="sect2">
<h3 id="min">MIN</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">MIN</span><span class="p">(</span> <span class="p">[</span> <span class="k">ALL</span> <span class="o">|</span> <span class="k">DISTINCT</span> <span class="p">]</span> <span class="n">value</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the minimum value across all input values.</p>
</div>
</div>
<div class="sect2">
<h3 id="sum">SUM</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">SUM</span><span class="p">(</span> <span class="p">[</span> <span class="k">ALL</span> <span class="o">|</span> <span class="k">DISTINCT</span> <span class="p">]</span> <span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the sum of numeric across all input values.</p>
</div>
</div>
<div class="sect2">
<h3 id="any_value">ANY_VALUE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">ANY_VALUE</span><span class="p">(</span> <span class="p">[</span> <span class="k">ALL</span> <span class="o">|</span> <span class="k">DISTINCT</span> <span class="p">]</span> <span class="n">value</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns one of the values of value across all input values; this is NOT specified in the SQL standard.</p>
</div>
</div>
<div class="sect2">
<h3 id="every">EVERY</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">EVERY</span><span class="p">(</span><span class="n">condition</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns TRUE if all of the values of condition are TRUE.</p>
</div>
</div>
<div class="sect2">
<h3 id="some">SOME</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">SOME</span><span class="p">(</span><span class="n">condition</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns TRUE if one or more of the values of condition is TRUE.</p>
</div>
</div>
<div class="sect2">
<h3 id="grouping">GROUPING</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">GROUPING</span><span class="p">(</span><span class="n">column_reference</span> <span class="p">[,</span><span class="n">column_reference</span><span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a bit vector of the given grouping expressions.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="json-functions">JSON Functions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="json_type">JSON_TYPE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_TYPE</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a string value indicating the type of jsonValue.</p>
</div>
</div>
<div class="sect2">
<h3 id="format-json">FORMAT JSON</h3>
<div class="paragraph">
<p>Indicates that the value is formatted as JSON.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_value">JSON_VALUE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_VALUE</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">,</span> <span class="n">path</span> <span class="p">[</span> <span class="n">RETURNING</span> <span class="k">type</span> <span class="p">]</span> <span class="p">[</span> <span class="p">{</span> <span class="n">ERROR</span> <span class="o">|</span> <span class="k">NULL</span> <span class="o">|</span> <span class="k">DEFAULT</span> <span class="n">expr</span> <span class="p">}</span> <span class="k">ON</span> <span class="n">EMPTY</span> <span class="p">]</span> <span class="p">[</span> <span class="p">{</span> <span class="n">ERROR</span> <span class="o">|</span> <span class="k">NULL</span> <span class="o">|</span> <span class="k">DEFAULT</span> <span class="n">expr</span> <span class="p">}</span> <span class="k">ON</span> <span class="n">ERROR</span> <span class="p">]</span> <span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Extract an SQL scalar from a jsonValue using JSON path expression path.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_query">JSON_QUERY</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_QUERY</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">,</span> <span class="n">path</span> <span class="p">[</span> <span class="n">RETURNING</span> <span class="k">type</span> <span class="p">]</span> <span class="p">[</span> <span class="p">{</span> <span class="k">WITHOUT</span> <span class="p">[</span> <span class="n">ARRAY</span> <span class="p">]</span> <span class="o">|</span> <span class="k">WITH</span> <span class="p">[</span> <span class="n">CONDITIONAL</span> <span class="o">|</span> <span class="n">UNCONDITIONAL</span> <span class="p">]</span> <span class="p">[</span> <span class="n">ARRAY</span> <span class="p">]</span> <span class="p">}</span> <span class="n">WRAPPER</span> <span class="p">]</span> <span class="p">[</span> <span class="p">{</span> <span class="n">ERROR</span> <span class="o">|</span> <span class="k">NULL</span> <span class="o">|</span> <span class="n">EMPTY</span> <span class="n">ARRAY</span> <span class="o">|</span> <span class="n">EMPTY</span> <span class="k">OBJECT</span> <span class="p">}</span> <span class="k">ON</span> <span class="n">EMPTY</span> <span class="p">]</span> <span class="p">[</span> <span class="p">{</span> <span class="n">ERROR</span> <span class="o">|</span> <span class="k">NULL</span> <span class="o">|</span> <span class="n">EMPTY</span> <span class="n">ARRAY</span> <span class="o">|</span> <span class="n">EMPTY</span> <span class="k">OBJECT</span> <span class="p">}</span> <span class="k">ON</span> <span class="n">ERROR</span> <span class="p">]</span> <span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Extract a JSON object or JSON array from jsonValue using the path JSON path expression.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_type-2">JSON_TYPE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_TYPE</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a string value indicating the type of <code>jsonValue</code>.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_exists">JSON_EXISTS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_EXISTS</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">,</span> <span class="n">path</span> <span class="p">[</span> <span class="p">{</span> <span class="k">TRUE</span> <span class="o">|</span> <span class="k">FALSE</span> <span class="o">|</span> <span class="k">UNKNOWN</span> <span class="o">|</span> <span class="n">ERROR</span> <span class="p">}</span> <span class="k">ON</span> <span class="n">ERROR</span> <span class="p">]</span> <span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Whether a jsonValue satisfies a search criterion described using JSON path expression path.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_depth">JSON_DEPTH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_DEPTH</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns an integer value indicating the depth of jsonValue.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_keys">JSON_KEYS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_KEYS</span><span class="p">(</span><span class="n">jsonValue</span> <span class="p">[,</span> <span class="n">path</span> <span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a string indicating the keys of a JSON jsonValue.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_pretty">JSON_PRETTY</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_PRETTY</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a pretty-printing of jsonValue.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_length">JSON_LENGTH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_LENGTH</span><span class="p">(</span><span class="n">jsonValue</span> <span class="p">[,</span> <span class="n">path</span> <span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a integer indicating the length of jsonValue.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_remove">JSON_REMOVE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_REMOVE</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">,</span> <span class="n">path</span> <span class="p">[,</span> <span class="n">path</span> <span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Removes data from jsonValue using a series of path expressions and returns the result.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_storage_size">JSON_STORAGE_SIZE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_STORAGE_SIZE</span><span class="p">(</span><span class="n">jsonValue</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of bytes used to store the binary representation of jsonValue.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_object">JSON_OBJECT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_OBJECT</span><span class="p">(</span> <span class="n">jsonKeyVal</span> <span class="p">[,</span> <span class="n">jsonKeyVal</span> <span class="p">]</span><span class="o">*</span> <span class="p">[</span> <span class="n">nullBehavior</span> <span class="p">]</span> <span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Construct JSON object using a series of key-value pairs.</p>
</div>
</div>
<div class="sect2">
<h3 id="json_array">JSON_ARRAY</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">JSON_ARRAY</span><span class="p">(</span> <span class="p">[</span> <span class="n">jsonVal</span> <span class="p">[,</span> <span class="n">jsonVal</span> <span class="p">]</span><span class="o">*</span> <span class="p">]</span> <span class="p">[</span> <span class="n">nullBehavior</span> <span class="p">]</span> <span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Construct a JSON array using a series of values.</p>
</div>
</div>
<div class="sect2">
<h3 id="is-json-value">IS JSON VALUE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">jsonValue</span> <span class="k">IS</span> <span class="n">JSON</span> <span class="p">[</span> <span class="n">VALUE</span> <span class="p">]</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Whether jsonValue is a JSON value.</p>
</div>
</div>
<div class="sect2">
<h3 id="is-json-object">IS JSON OBJECT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">jsonValue</span> <span class="k">IS</span> <span class="n">JSON</span> <span class="k">OBJECT</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Whether jsonValue is a JSON object.</p>
</div>
</div>
<div class="sect2">
<h3 id="is-json-array">IS JSON ARRAY</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">jsonValue</span> <span class="k">IS</span> <span class="n">JSON</span> <span class="n">ARRAY</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Whether jsonValue is a JSON array.</p>
</div>
</div>
<div class="sect2">
<h3 id="is-json-scalar">IS JSON SCALAR</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">jsonValue</span> <span class="k">IS</span> <span class="n">JSON</span> <span class="n">SCALAR</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Whether jsonValue is a JSON scalar value.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="regular-expression-functions">Regular Expression Functions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="posix-regex-case-insensitive">POSIX REGEX CASE INSENSITIVE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">value</span> <span class="mi">1</span> <span class="n">POSIX</span> <span class="n">REGEX</span> <span class="k">CASE</span> <span class="k">INSENSITIVE</span> <span class="n">value</span> <span class="mi">2</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Case-sensitive POSIX regular expression.</p>
</div>
</div>
<div class="sect2">
<h3 id="posix-regex-case-sensitive">POSIX REGEX CASE SENSITIVE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">value</span> <span class="mi">1</span> <span class="n">POSIX</span> <span class="n">REGEX</span> <span class="k">CASE</span> <span class="k">SENSITIVE</span> <span class="n">value</span> <span class="mi">2</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Case-sensitive POSIX regular expression.</p>
</div>
</div>
<div class="sect2">
<h3 id="regexp_replace">REGEXP_REPLACE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">REGEXP_REPLACE</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">regexp</span><span class="p">,</span> <span class="n">rep</span> <span class="p">[,</span> <span class="n">pos</span> <span class="p">[,</span> <span class="n">occurrence</span> <span class="p">[,</span> <span class="n">matchType</span><span class="p">]]])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Replaces all substrings of string that match regexp with rep at the starting pos in expr (if omitted, the default is 1), occurrence specifies which occurrence of a match to search for (if omitted, the default is 1), matchType specifies how to perform matching</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">REGEXP_REPLACE</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">regexp</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Replaces all substrings of value that match regexp with an empty string and returns modified value.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="numeric-functions">Numeric Functions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="mod">MOD</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">MOD</span><span class="p">(</span><span class="n">numeric1</span><span class="p">,</span> <span class="n">numeric2</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the remainder (modulus) of numeric1 divided by numeric2. The result is negative only if numeric1 is negative.</p>
</div>
</div>
<div class="sect2">
<h3 id="exp">EXP</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">EXP</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns e raised to the power of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="power">POWER</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">POWER</span><span class="p">(</span><span class="n">numeric1</span><span class="p">,</span> <span class="n">numeric2</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns numeric1 raised to the power of numeric2.</p>
</div>
</div>
<div class="sect2">
<h3 id="ln">LN</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">LN</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the natural logarithm (base e) of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="log10">LOG10</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">LOG10</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the base 10 logarithm of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="abs">ABS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">ABS</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the absolute value of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="rand">RAND</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">RAND</span><span class="p">([</span><span class="n">seed</span><span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Generates a random double between 0 and 1 inclusive, optionally initializing the random number generator with seed.</p>
</div>
</div>
<div class="sect2">
<h3 id="rand_integer">RAND_INTEGER</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">RAND_INTEGER</span><span class="p">([</span><span class="n">seed</span><span class="p">,</span> <span class="p">]</span> <span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Generates a random integer between 0 and numeric - 1 inclusive, optionally initializing the random number generator with seed.</p>
</div>
</div>
<div class="sect2">
<h3 id="acos">ACOS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">ACOS</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the arc cosine of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="asin">ASIN</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">ASIN</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the arc sine of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="atan">ATAN</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">ATAN</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the arc tangent of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="atan2">ATAN2</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">ATAN2</span><span class="p">(</span><span class="nb">numeric</span><span class="p">,</span> <span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the arc tangent of the numeric coordinates.</p>
</div>
</div>
<div class="sect2">
<h3 id="sqrt">SQRT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">SQRT</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the square root of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="cbrt">CBRT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">CBRT</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the cube root of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="cos">COS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">COS</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the cosine of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="cosh">COSH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">COSH</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the hyperbolic cosine of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="cot">COT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">COT</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the cotangent of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="degrees">DEGREES</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">DEGREES</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Converts numeric from radians to degrees.</p>
</div>
</div>
<div class="sect2">
<h3 id="radians">RADIANS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">RADIANS</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Converts numeric from degrees to radians.</p>
</div>
</div>
<div class="sect2">
<h3 id="round">ROUND</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">ROUND</span><span class="p">(</span><span class="n">numeric1</span> <span class="p">[,</span> <span class="n">integer2</span><span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Rounds numeric1 to optionally integer2 (if not specified 0) places right to the decimal point.</p>
</div>
</div>
<div class="sect2">
<h3 id="sign">SIGN</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">SIGN</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the signum of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="sin">SIN</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">SIN</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the sine of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="sinh">SINH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">SINH</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the hyperbolic sine of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="tan">TAN</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">TAN</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the tangent of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="tanh">TANH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">TANH</span><span class="p">(</span><span class="nb">numeric</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the hyperbolic tangent of numeric.</p>
</div>
</div>
<div class="sect2">
<h3 id="truncate">TRUNCATE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">TRUNCATE</span><span class="p">(</span><span class="n">numeric1</span> <span class="p">[,</span> <span class="n">integer2</span><span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Truncates numeric1 to optionally integer2 (if not specified 0) places right to the decimal point.</p>
</div>
</div>
<div class="sect2">
<h3 id="pi">PI</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">PI</span><span class="p">()</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a value that is closer than any other value to Pi.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="string-functions">String Functions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="upper">UPPER</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">UPPER</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a character string converted to upper case.</p>
</div>
</div>
<div class="sect2">
<h3 id="lower">LOWER</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">LOWER</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a character string converted to lower case.</p>
</div>
</div>
<div class="sect2">
<h3 id="initcap">INITCAP</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">INITCAP</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns string with the first letter of each word converter to upper case and the rest to lower case. Words are sequences of alphanumeric characters separated by non-alphanumeric characters.</p>
</div>
</div>
<div class="sect2">
<h3 id="to_base64">TO_BASE64</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">TO_BASE64</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Converts the string to base-64 encoded form and returns an encoded string</p>
</div>
</div>
<div class="sect2">
<h3 id="from_base64">FROM_BASE64</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">FROM_BASE64</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the decoded result of a base-64 string as a string.</p>
</div>
</div>
<div class="sect2">
<h3 id="md5">MD5</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">MD5</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Calculates an MD5 128-bit checksum of string and returns it as a hex string.</p>
</div>
</div>
<div class="sect2">
<h3 id="sha1">SHA1</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">SHA1</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Calculates a SHA-1 hash value of string and returns it as a hex string.</p>
</div>
</div>
<div class="sect2">
<h3 id="substring">SUBSTRING</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">SUBSTRING</span><span class="p">(</span><span class="n">string</span> <span class="k">FROM</span> <span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a substring of a character string starting at a given point.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">SUBSTRING</span><span class="p">(</span><span class="n">string</span> <span class="k">FROM</span> <span class="nb">integer</span> <span class="k">FOR</span> <span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a substring of a character string starting at a given point with a given length.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">SUBSTRING</span><span class="p">(</span><span class="nb">binary</span> <span class="k">FROM</span> <span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a substring of binary starting at a given point.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">SUBSTRING</span><span class="p">(</span><span class="nb">binary</span> <span class="k">FROM</span> <span class="nb">integer</span> <span class="k">FOR</span> <span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a substring of binary starting at a given point with a given length.</p>
</div>
</div>
<div class="sect2">
<h3 id="left">LEFT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">LEFT</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="k">length</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the leftmost length characters from the string.</p>
</div>
</div>
<div class="sect2">
<h3 id="right">RIGHT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">RIGHT</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="k">length</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the rightmost length characters from the string.</p>
</div>
</div>
<div class="sect2">
<h3 id="replace">REPLACE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">REPLACE</span><span class="p">(</span><span class="nb">char</span><span class="p">,</span> <span class="n">search_string</span> <span class="p">[,</span> <span class="n">replace_string</span><span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Replaces search_string with replace_string.</p>
</div>
</div>
<div class="sect2">
<h3 id="translate">TRANSLATE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">TRANSLATE</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">fromString</span><span class="p">,</span> <span class="n">toString</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns expr with all occurrences of each character in fromString replaced by its corresponding character in toString. Characters in expr that are not in fromString are not replaced.</p>
</div>
</div>
<div class="sect2">
<h3 id="chr">CHR</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">CHR</span><span class="p">(</span><span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the character whose UTF-8 code is integer.</p>
</div>
</div>
<div class="sect2">
<h3 id="char_length">CHAR_LENGTH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">CHAR_LENGTH</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of characters in a character string.</p>
</div>
</div>
<div class="sect2">
<h3 id="character_length">CHARACTER_LENGTH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">CHARACTER_LENGTH</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of characters in a character string.</p>
</div>
</div>
<div class="sect2">
<h3 id="">||</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">string</span> <span class="o">||</span> <span class="n">string</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Concatenates two character strings.</p>
</div>
</div>
<div class="sect2">
<h3 id="concat">CONCAT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">CONCAT</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Concatenates two strings, returns null only when both string arguments are null, otherwise treats null as empty string.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">CONCAT</span><span class="p">(</span><span class="n">string</span> <span class="p">[,</span> <span class="n">string</span> <span class="p">]</span><span class="o">*</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Concatenates one or more strings, returns null if any of the arguments is null.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">CONCAT</span><span class="p">(</span><span class="n">string</span> <span class="p">[,</span> <span class="n">string</span> <span class="p">]</span><span class="o">*</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Concatenates one or more strings, null is treated as empty string.</p>
</div>
</div>
<div class="sect2">
<h3 id="overlay">OVERLAY</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">OVERLAY</span><span class="p">(</span><span class="n">string1</span> <span class="k">PLACING</span> <span class="n">string2</span> <span class="k">FROM</span> <span class="nb">integer</span> <span class="p">[</span> <span class="k">FOR</span> <span class="n">integer2</span> <span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Replaces a substring of string1 with string2.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">OVERLAY</span><span class="p">(</span><span class="n">binary1</span> <span class="k">PLACING</span> <span class="n">binary2</span> <span class="k">FROM</span> <span class="nb">integer</span> <span class="p">[</span> <span class="k">FOR</span> <span class="n">integer2</span> <span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Replaces a substring of binary1 with binary2.</p>
</div>
</div>
<div class="sect2">
<h3 id="position">POSITION</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">POSITION</span><span class="p">(</span><span class="k">substring</span> <span class="k">IN</span> <span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the position of the first occurrence of substring in string.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">POSITION</span><span class="p">(</span><span class="k">substring</span> <span class="k">IN</span> <span class="n">string</span> <span class="k">FROM</span> <span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the position of the first occurrence of substring in string starting at a given point (not standard SQL).</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">POSITION</span><span class="p">(</span><span class="n">binary1</span> <span class="k">IN</span> <span class="n">binary2</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the position of the first occurrence of binary1 in binary2.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">POSITION</span><span class="p">(</span><span class="n">binary1</span> <span class="k">IN</span> <span class="n">binary2</span> <span class="k">FROM</span> <span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the position of the first occurrence of binary1 in binary2 starting at a given point (not standard SQL).</p>
</div>
</div>
<div class="sect2">
<h3 id="ascii">ASCII</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">ASCII</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the ASCII code of the first character of string; if the first character is a non-ASCII character, returns its Unicode code point; returns 0 if string is empty.</p>
</div>
</div>
<div class="sect2">
<h3 id="repeat">REPEAT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">REPEAT</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a string consisting of string repeated of integer times; returns an empty string if integer is less than 1.</p>
</div>
</div>
<div class="sect2">
<h3 id="space">SPACE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">SPACE</span><span class="p">(</span><span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a string with an integer number of spaces; returns an empty string if integer is less than 1.</p>
</div>
</div>
<div class="sect2">
<h3 id="strcmp">STRCMP</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">STRCMP</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns 0 if both of the strings are same and returns -1 when the first argument is smaller than the second and 1 when the second one is smaller than the first one.</p>
</div>
</div>
<div class="sect2">
<h3 id="soundex">SOUNDEX</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">SOUNDEX</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p>Returns the phonetic representation of string; throws if string is encoded with multi-byte encoding such as UTF-8; or</p>
</li>
<li>
<p>Returns the phonetic representation of string; return original string if string is encoded with multi-byte encoding such as UTF-8</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="difference">DIFFERENCE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">DIFFERENCE</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a measure of the similarity of two strings, namely the number of character positions that their SOUNDEX values have in common: 4 if the SOUNDEX values are same and 0 if the SOUNDEX values are totally different.</p>
</div>
</div>
<div class="sect2">
<h3 id="reverse">REVERSE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">REVERSE</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns string with the order of the characters reversed.</p>
</div>
</div>
<div class="sect2">
<h3 id="trim">TRIM</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">TRIM</span><span class="p">(</span> <span class="p">{</span> <span class="k">BOTH</span> <span class="o">|</span> <span class="k">LEADING</span> <span class="o">|</span> <span class="k">TRAILING</span> <span class="p">}</span> <span class="n">string1</span> <span class="k">FROM</span> <span class="n">string2</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Removes the longest string containing only the characters in string1 from the start/end/both ends of string1.</p>
</div>
</div>
<div class="sect2">
<h3 id="ltrim">LTRIM</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">LTRIM</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns string with all blanks removed from the start.</p>
</div>
</div>
<div class="sect2">
<h3 id="rtrim">RTRIM</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">RTRIM</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns string with all blanks removed from the end.</p>
</div>
</div>
<div class="sect2">
<h3 id="substr">SUBSTR</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">SUBSTR</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="k">position</span> <span class="p">[,</span> <span class="n">substringLength</span> <span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a portion of string, beginning at character position, substringLength characters long. SUBSTR calculates lengths using characters as defined by the input character set.</p>
</div>
</div>
<div class="sect2">
<h3 id="length">LENGTH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">LENGTH</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to CHAR_LENGTH(string).</p>
</div>
</div>
<div class="sect2">
<h3 id="octet_length">OCTET_LENGTH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">OCTET_LENGTH</span><span class="p">(</span><span class="nb">binary</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of bytes in binary.</p>
</div>
</div>
<div class="sect2">
<h3 id="like">LIKE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">string1</span> <span class="k">LIKE</span> <span class="n">string2</span> <span class="p">[</span> <span class="k">ESCAPE</span> <span class="n">string3</span> <span class="p">]</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Whether string1 matches pattern string2.</p>
</div>
</div>
<div class="sect2">
<h3 id="similar-to">SIMILAR TO</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">string1</span> <span class="k">SIMILAR</span> <span class="k">TO</span> <span class="n">string2</span> <span class="p">[</span> <span class="k">ESCAPE</span> <span class="n">string3</span> <span class="p">]</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Whether string1 matches regular expression string2.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="datetime-functions">Date/Time Functions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="extract">EXTRACT</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">EXTRACT</span><span class="p">(</span><span class="n">timeUnit</span> <span class="k">FROM</span> <span class="nb">datetime</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Extracts and returns the value of a specified datetime field from a datetime value expression.</p>
</div>
</div>
<div class="sect2">
<h3 id="floor">FLOOR</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">FLOOR</span><span class="p">(</span><span class="nb">datetime</span> <span class="k">TO</span> <span class="n">timeUnit</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Rounds datetime down to timeUnit.</p>
</div>
</div>
<div class="sect2">
<h3 id="ceil">CEIL</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">CEIL</span><span class="p">(</span><span class="nb">datetime</span> <span class="k">TO</span> <span class="n">timeUnit</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Rounds datetime up to timeUnit.</p>
</div>
</div>
<div class="sect2">
<h3 id="timestampdiff">TIMESTAMPDIFF</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">TIMESTAMPDIFF</span><span class="p">(</span><span class="n">timeUnit</span><span class="p">,</span> <span class="nb">datetime</span><span class="p">,</span> <span class="n">datetime2</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the (signed) number of timeUnit intervals between datetime and datetime2. Equivalent to (datetime2 - datetime) timeUnit.</p>
</div>
</div>
<div class="sect2">
<h3 id="last_day">LAST_DAY</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">LAST_DAY</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the date of the last day of the month in a value of datatype DATE; For example, it returns DATE’2020-02-29’ for both DATE’2020-02-10’ and TIMESTAMP’2020-02-10 10:10:10’.</p>
</div>
</div>
<div class="sect2">
<h3 id="dayname">DAYNAME</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">DAYNAME</span><span class="p">(</span><span class="nb">datetime</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the name of the day of the week based on the datetime value.</p>
</div>
</div>
<div class="sect2">
<h3 id="monthname">MONTHNAME</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">MONTHNAME</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the name, in the connection’s locale, of the month in datetime; for example, it returns ‘二月’ for both DATE ‘2020-02-10’ and TIMESTAMP ‘2020-02-10 10:10:10’.</p>
</div>
</div>
<div class="sect2">
<h3 id="dayofmonth">DAYOFMONTH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">DAYOFMONTH</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(DAY FROM date). Returns an integer between 1 and 31.</p>
</div>
</div>
<div class="sect2">
<h3 id="dayofweek">DAYOFWEEK</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">DAYOFWEEK</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(DOW FROM date). Returns an integer between 1 and 7.</p>
</div>
</div>
<div class="sect2">
<h3 id="dayofyear">DAYOFYEAR</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">DAYOFYEAR</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(DOY FROM date). Returns an integer between 1 and 366.</p>
</div>
</div>
<div class="sect2">
<h3 id="year">YEAR</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="nb">YEAR</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(YEAR FROM date). Returns an integer.</p>
</div>
</div>
<div class="sect2">
<h3 id="quarter">QUARTER</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">QUARTER</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(QUARTER FROM date). Returns an integer between 1 and 4.</p>
</div>
</div>
<div class="sect2">
<h3 id="month">MONTH</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">MONTH</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(MONTH FROM date). Returns an integer between 1 and 12.</p>
</div>
</div>
<div class="sect2">
<h3 id="week">WEEK</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">WEEK</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(WEEK FROM date). Returns an integer between 1 and 53.</p>
</div>
</div>
<div class="sect2">
<h3 id="hour">HOUR</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">HOUR</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(HOUR FROM date). Returns an integer between 0 and 23.</p>
</div>
</div>
<div class="sect2">
<h3 id="minute">MINUTE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">MINUTE</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(MINUTE FROM date). Returns an integer between 0 and 59.</p>
</div>
</div>
<div class="sect2">
<h3 id="second">SECOND</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">SECOND</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to EXTRACT(SECOND FROM date). Returns an integer between 0 and 59.</p>
</div>
</div>
<div class="sect2">
<h3 id="timestamp_seconds">TIMESTAMP_SECONDS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">TIMESTAMP_SECONDS</span><span class="p">(</span><span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the TIMESTAMP that is integer seconds after 1970-01-01 00:00:00.</p>
</div>
</div>
<div class="sect2">
<h3 id="timestamp_millis">TIMESTAMP_MILLIS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">TIMESTAMP_MILLIS</span><span class="p">(</span><span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the TIMESTAMP that is integer milliseconds after 1970-01-01 00:00:00.</p>
</div>
</div>
<div class="sect2">
<h3 id="timestamp_micros">TIMESTAMP_MICROS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">TIMESTAMP_MICROS</span><span class="p">(</span><span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the TIMESTAMP that is integer microseconds after 1970-01-01 00:00:00.</p>
</div>
</div>
<div class="sect2">
<h3 id="unix_seconds">UNIX_SECONDS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">UNIX_SECONDS</span><span class="p">(</span><span class="nb">timestamp</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of seconds since 1970-01-01 00:00:00.</p>
</div>
</div>
<div class="sect2">
<h3 id="unix_millis">UNIX_MILLIS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">UNIX_MILLIS</span><span class="p">(</span><span class="nb">timestamp</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of milliseconds since 1970-01-01 00:00:00.</p>
</div>
</div>
<div class="sect2">
<h3 id="unix_micros">UNIX_MICROS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">UNIX_MICROS</span><span class="p">(</span><span class="nb">timestamp</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of microseconds since 1970-01-01 00:00:00.</p>
</div>
</div>
<div class="sect2">
<h3 id="unix_date">UNIX_DATE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">UNIX_DATE</span><span class="p">(</span><span class="nb">date</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the number of days since 1970-01-01</p>
</div>
</div>
<div class="sect2">
<h3 id="date_from_unix_date">DATE_FROM_UNIX_DATE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">DATE_FROM_UNIX_DATE</span><span class="p">(</span><span class="nb">integer</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the DATE that is integer days after 1970-01-01.</p>
</div>
</div>
<div class="sect2">
<h3 id="date">DATE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="nb">DATE</span><span class="p">(</span><span class="nb">timestamp</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Extracts the DATE from a timestamp.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="nb">DATE</span><span class="p">(</span><span class="n">timestampLtz</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Extracts the DATE from timestampLtz (an instant; BigQuery’s TIMESTAMP type), assuming UTC.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="nb">DATE</span><span class="p">(</span><span class="n">timestampLtz</span><span class="p">,</span> <span class="n">timeZone</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Extracts the DATE from timestampLtz (an instant; BigQuery’s TIMESTAMP type) in timeZone.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="nb">DATE</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Equivalent to CAST(string AS DATE).</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="nb">DATE</span><span class="p">(</span><span class="nb">year</span><span class="p">,</span> <span class="k">month</span><span class="p">,</span> <span class="k">day</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a DATE value for year, month, and day (all of type INTEGER).</p>
</div>
</div>
<div class="sect2">
<h3 id="current_timestamp">CURRENT_TIMESTAMP</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">CURRENT_TIMESTAMP</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the current date and time in the session time zone, in a value of datatype TIMESTAMP WITH LOCAL TIME ZONE.</p>
</div>
</div>
<div class="sect2">
<h3 id="current_date">CURRENT_DATE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">CURRENT_DATE</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the current date in the session time zone, in a value of datatype DATE.</p>
</div>
</div>
<div class="sect2">
<h3 id="localtime">LOCALTIME</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">LOCALTIME</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the current date and time in the session time zone in a value of datatype TIME.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">LOCALTIME</span><span class="p">(</span><span class="nb">precision</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the current date and time in the session time zone in a value of datatype TIME, with precision digits of precision.</p>
</div>
</div>
<div class="sect2">
<h3 id="localtimestamp">LOCALTIMESTAMP</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">LOCALTIMESTAMP</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the current date and time in the session time zone in a value of datatype TIMESTAMP.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">LOCALTIMESTAMP</span><span class="p">(</span><span class="nb">precision</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the current date and time in the session time zone in a value of datatype TIMESTAMP, with precision digits of precision.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="other-functions">Other Functions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="cast">CAST</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">CAST</span><span class="p">(</span><span class="n">value</span> <span class="k">AS</span> <span class="k">type</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Converts a value to a given type. Casts between integer types truncate towards 0.</p>
</div>
</div>
<div class="sect2">
<h3 id="coalesce">COALESCE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">COALESCE</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">value</span> <span class="p">[,</span> <span class="n">value</span> <span class="p">]</span><span class="o">*</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Provides a value if the first value is null. For example, COALESCE(NULL, 5) returns 5.</p>
</div>
</div>
<div class="sect2">
<h3 id="greatest">GREATEST</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">GREATEST</span><span class="p">(</span><span class="n">expr</span> <span class="p">[,</span> <span class="n">expr</span> <span class="p">]</span><span class="o">*</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the greatest of the expressions.</p>
</div>
</div>
<div class="sect2">
<h3 id="nullif">NULLIF</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">NULLIF</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns NULL if the values are the same. For example, NULLIF(5, 5) returns NULL; NULLIF(5, 0) returns 5.</p>
</div>
</div>
<div class="sect2">
<h3 id="nvl">NVL</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">NVL</span><span class="p">(</span><span class="n">value1</span><span class="p">,</span> <span class="n">value2</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns value1 if value1 is not null, otherwise value2.</p>
</div>
</div>
<div class="sect2">
<h3 id="case">CASE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">CASE</span> <span class="n">value</span>
<span class="k">WHEN</span> <span class="n">value1</span> <span class="p">[,</span> <span class="n">value11</span> <span class="p">]</span><span class="o">*</span> <span class="k">THEN</span> <span class="n">result1</span>
<span class="p">[</span> <span class="k">WHEN</span> <span class="n">valueN</span> <span class="p">[,</span> <span class="n">valueN1</span> <span class="p">]</span><span class="o">*</span> <span class="k">THEN</span> <span class="n">resultN</span> <span class="p">]</span><span class="o">*</span>
<span class="p">[</span> <span class="k">ELSE</span> <span class="n">resultZ</span> <span class="p">]</span>
<span class="k">END</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Simple case.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">CASE</span>
<span class="k">WHEN</span> <span class="n">condition1</span> <span class="k">THEN</span> <span class="n">result1</span>
<span class="p">[</span> <span class="k">WHEN</span> <span class="n">conditionN</span> <span class="k">THEN</span> <span class="n">resultN</span> <span class="p">]</span><span class="o">*</span>
<span class="p">[</span> <span class="k">ELSE</span> <span class="n">resultZ</span> <span class="p">]</span>
<span class="k">END</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Searched case.</p>
</div>
</div>
<div class="sect2">
<h3 id="decode">DECODE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">DECODE</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">value1</span><span class="p">,</span> <span class="n">result1</span> <span class="p">[,</span> <span class="n">valueN</span><span class="p">,</span> <span class="n">resultN</span> <span class="p">]</span><span class="o">*</span> <span class="p">[,</span> <span class="k">default</span> <span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Compares value to each valueN value one by one; if value is equal to a valueN, returns the corresponding resultN, else returns default, or NULL if default is not specified.</p>
</div>
</div>
<div class="sect2">
<h3 id="least">LEAST</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">LEAST</span><span class="p">(</span><span class="n">expr</span> <span class="p">[,</span> <span class="n">expr</span> <span class="p">]</span><span class="o">*</span> <span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the least of the expressions.</p>
</div>
</div>
<div class="sect2">
<h3 id="compress">COMPRESS</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">COMPRESS</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Compresses a string using zlib compression and returns the result as a binary string.</p>
</div>
</div>
<div class="sect2">
<h3 id="typeof">TYPEOF</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">TYPEOF</span> <span class="n">value</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the type of the specified value.</p>
</div>
</div>
<div class="sect2">
<h3 id="rand_uuid">RAND_UUID</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">RAND_UUID</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Generates a random UUID.</p>
</div>
</div>
<div class="sect2">
<h3 id="system_range">SYSTEM_RANGE</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="n">SYSTEM_RANGE</span><span class="p">(</span><span class="k">start</span><span class="p">,</span> <span class="k">end</span><span class="p">[,</span> <span class="k">increment</span><span class="p">])</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns a range from the table, with an optional increment.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="security-functions">Security Functions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="current_user">CURRENT_USER</h3>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="sql"><span class="k">CURRENT_USER</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Returns the name of the current database user. When security is disabled, returns the system user name instead.</p>
</div>
</div>
</div>
</div>
<div class="copyright">
© 2025 The Apache Software Foundation.<br/>
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.
</div>
</article>
<nav class="right-nav" data-swiftype-index='false'>
<div class="toc-wrapper">
<ul class="sectlevel1">
<li><a href="#aggregate-functions">Aggregate Functions</a>
<ul class="sectlevel2">
<li><a href="#avg">AVG</a></li>
<li><a href="#count">COUNT</a></li>
<li><a href="#max">MAX</a></li>
<li><a href="#min">MIN</a></li>
<li><a href="#sum">SUM</a></li>
<li><a href="#any_value">ANY_VALUE</a></li>
<li><a href="#every">EVERY</a></li>
<li><a href="#some">SOME</a></li>
<li><a href="#grouping">GROUPING</a></li>
</ul>
</li>
<li><a href="#json-functions">JSON Functions</a>
<ul class="sectlevel2">
<li><a href="#json_type">JSON_TYPE</a></li>
<li><a href="#format-json">FORMAT JSON</a></li>
<li><a href="#json_value">JSON_VALUE</a></li>
<li><a href="#json_query">JSON_QUERY</a></li>
<li><a href="#json_type-2">JSON_TYPE</a></li>
<li><a href="#json_exists">JSON_EXISTS</a></li>
<li><a href="#json_depth">JSON_DEPTH</a></li>
<li><a href="#json_keys">JSON_KEYS</a></li>
<li><a href="#json_pretty">JSON_PRETTY</a></li>
<li><a href="#json_length">JSON_LENGTH</a></li>
<li><a href="#json_remove">JSON_REMOVE</a></li>
<li><a href="#json_storage_size">JSON_STORAGE_SIZE</a></li>
<li><a href="#json_object">JSON_OBJECT</a></li>
<li><a href="#json_array">JSON_ARRAY</a></li>
<li><a href="#is-json-value">IS JSON VALUE</a></li>
<li><a href="#is-json-object">IS JSON OBJECT</a></li>
<li><a href="#is-json-array">IS JSON ARRAY</a></li>
<li><a href="#is-json-scalar">IS JSON SCALAR</a></li>
</ul>
</li>
<li><a href="#regular-expression-functions">Regular Expression Functions</a>
<ul class="sectlevel2">
<li><a href="#posix-regex-case-insensitive">POSIX REGEX CASE INSENSITIVE</a></li>
<li><a href="#posix-regex-case-sensitive">POSIX REGEX CASE SENSITIVE</a></li>
<li><a href="#regexp_replace">REGEXP_REPLACE</a></li>
</ul>
</li>
<li><a href="#numeric-functions">Numeric Functions</a>
<ul class="sectlevel2">
<li><a href="#mod">MOD</a></li>
<li><a href="#exp">EXP</a></li>
<li><a href="#power">POWER</a></li>
<li><a href="#ln">LN</a></li>
<li><a href="#log10">LOG10</a></li>
<li><a href="#abs">ABS</a></li>
<li><a href="#rand">RAND</a></li>
<li><a href="#rand_integer">RAND_INTEGER</a></li>
<li><a href="#acos">ACOS</a></li>
<li><a href="#asin">ASIN</a></li>
<li><a href="#atan">ATAN</a></li>
<li><a href="#atan2">ATAN2</a></li>
<li><a href="#sqrt">SQRT</a></li>
<li><a href="#cbrt">CBRT</a></li>
<li><a href="#cos">COS</a></li>
<li><a href="#cosh">COSH</a></li>
<li><a href="#cot">COT</a></li>
<li><a href="#degrees">DEGREES</a></li>
<li><a href="#radians">RADIANS</a></li>
<li><a href="#round">ROUND</a></li>
<li><a href="#sign">SIGN</a></li>
<li><a href="#sin">SIN</a></li>
<li><a href="#sinh">SINH</a></li>
<li><a href="#tan">TAN</a></li>
<li><a href="#tanh">TANH</a></li>
<li><a href="#truncate">TRUNCATE</a></li>
<li><a href="#pi">PI</a></li>
</ul>
</li>
<li><a href="#string-functions">String Functions</a>
<ul class="sectlevel2">
<li><a href="#upper">UPPER</a></li>
<li><a href="#lower">LOWER</a></li>
<li><a href="#initcap">INITCAP</a></li>
<li><a href="#to_base64">TO_BASE64</a></li>
<li><a href="#from_base64">FROM_BASE64</a></li>
<li><a href="#md5">MD5</a></li>
<li><a href="#sha1">SHA1</a></li>
<li><a href="#substring">SUBSTRING</a></li>
<li><a href="#left">LEFT</a></li>
<li><a href="#right">RIGHT</a></li>
<li><a href="#replace">REPLACE</a></li>
<li><a href="#translate">TRANSLATE</a></li>
<li><a href="#chr">CHR</a></li>
<li><a href="#char_length">CHAR_LENGTH</a></li>
<li><a href="#character_length">CHARACTER_LENGTH</a></li>
<li><a href="#">||</a></li>
<li><a href="#concat">CONCAT</a></li>
<li><a href="#overlay">OVERLAY</a></li>
<li><a href="#position">POSITION</a></li>
<li><a href="#ascii">ASCII</a></li>
<li><a href="#repeat">REPEAT</a></li>
<li><a href="#space">SPACE</a></li>
<li><a href="#strcmp">STRCMP</a></li>
<li><a href="#soundex">SOUNDEX</a></li>
<li><a href="#difference">DIFFERENCE</a></li>
<li><a href="#reverse">REVERSE</a></li>
<li><a href="#trim">TRIM</a></li>
<li><a href="#ltrim">LTRIM</a></li>
<li><a href="#rtrim">RTRIM</a></li>
<li><a href="#substr">SUBSTR</a></li>
<li><a href="#length">LENGTH</a></li>
<li><a href="#octet_length">OCTET_LENGTH</a></li>
<li><a href="#like">LIKE</a></li>
<li><a href="#similar-to">SIMILAR TO</a></li>
</ul>
</li>
<li><a href="#datetime-functions">Date/Time Functions</a>
<ul class="sectlevel2">
<li><a href="#extract">EXTRACT</a></li>
<li><a href="#floor">FLOOR</a></li>
<li><a href="#ceil">CEIL</a></li>
<li><a href="#timestampdiff">TIMESTAMPDIFF</a></li>
<li><a href="#last_day">LAST_DAY</a></li>
<li><a href="#dayname">DAYNAME</a></li>
<li><a href="#monthname">MONTHNAME</a></li>
<li><a href="#dayofmonth">DAYOFMONTH</a></li>
<li><a href="#dayofweek">DAYOFWEEK</a></li>
<li><a href="#dayofyear">DAYOFYEAR</a></li>
<li><a href="#year">YEAR</a></li>
<li><a href="#quarter">QUARTER</a></li>
<li><a href="#month">MONTH</a></li>
<li><a href="#week">WEEK</a></li>
<li><a href="#hour">HOUR</a></li>
<li><a href="#minute">MINUTE</a></li>
<li><a href="#second">SECOND</a></li>
<li><a href="#timestamp_seconds">TIMESTAMP_SECONDS</a></li>
<li><a href="#timestamp_millis">TIMESTAMP_MILLIS</a></li>
<li><a href="#timestamp_micros">TIMESTAMP_MICROS</a></li>
<li><a href="#unix_seconds">UNIX_SECONDS</a></li>
<li><a href="#unix_millis">UNIX_MILLIS</a></li>
<li><a href="#unix_micros">UNIX_MICROS</a></li>
<li><a href="#unix_date">UNIX_DATE</a></li>
<li><a href="#date_from_unix_date">DATE_FROM_UNIX_DATE</a></li>
<li><a href="#date">DATE</a></li>
<li><a href="#current_timestamp">CURRENT_TIMESTAMP</a></li>
<li><a href="#current_date">CURRENT_DATE</a></li>
<li><a href="#localtime">LOCALTIME</a></li>
<li><a href="#localtimestamp">LOCALTIMESTAMP</a></li>
</ul>
</li>
<li><a href="#other-functions">Other Functions</a>
<ul class="sectlevel2">
<li><a href="#cast">CAST</a></li>
<li><a href="#coalesce">COALESCE</a></li>
<li><a href="#greatest">GREATEST</a></li>
<li><a href="#nullif">NULLIF</a></li>
<li><a href="#nvl">NVL</a></li>
<li><a href="#case">CASE</a></li>
<li><a href="#decode">DECODE</a></li>
<li><a href="#least">LEAST</a></li>
<li><a href="#compress">COMPRESS</a></li>
<li><a href="#typeof">TYPEOF</a></li>
<li><a href="#rand_uuid">RAND_UUID</a></li>
<li><a href="#system_range">SYSTEM_RANGE</a></li>
</ul>
</li>
<li><a href="#security-functions">Security Functions</a>
<ul class="sectlevel2">
<li><a href="#current_user">CURRENT_USER</a></li>
</ul>
</li>
</ul>
</div>
<nav class="promo-nav">
<!--#include virtual="/includes/docs_rightnav_promotion.html" -->
<!--a href="#" data-trigger-bugyard-feedback="true" id="doc-feedback-btn">Docs Feedback</a-->
</nav>
</nav>
</section>
<script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script>
<script>
// inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late
anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5');
anchors.options = {
placement: 'right',
visible: 'always'
};
</script>
<script type='module' src='/assets/js/index.js?1763137388' async crossorigin></script>
<script type='module' src='/assets/js/versioning.js?1763137388' async crossorigin></script>
<script type='module' src='/assets/js/railroad-diagram.js?1763137388' async></script>
<script type='module' src='/assets/js/search.js?1763137388' defer crossorigin></script>
<link rel="stylesheet" href="/assets/css/styles.css?1763137388" media="print" onload="this.media='all'">
<noscript><link media="all" rel="stylesheet" href="/assets/css/styles.css?1763137388"></noscript>
<link rel="stylesheet" href="/assets/css/docsearch.min.css" media="print" onload="this.media='all'">
<noscript><link media="all" rel="stylesheet" href="/assets/css/docsearch.min.css"></noscript>
</body>
</html>