blob: 91ac4d8e1e5119b357c46de75545303920c83cc1 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name=viewport content="width=device-width, initial-scale=1">
<title>String Manipulation - Apache Drill</title>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>
<link href='https://fonts.googleapis.com/css?family=PT+Sans' rel='stylesheet' type='text/css'/>
<link href="/css/site.css" rel="stylesheet" type="text/css"/>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/>
<link rel="icon" href="/favicon.ico" type="image/x-icon"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" language="javascript" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js" language="javascript" type="text/javascript"></script>
<script language="javascript" type="text/javascript" src="/js/modernizr.custom.js"></script>
<script language="javascript" type="text/javascript" src="/js/script.js"></script>
<script language="javascript" type="text/javascript" src="/js/drill.js"></script>
</head>
<body onResize="resized();">
<div class="page-wrap">
<div class="bui"></div>
<div id="menu" class="mw">
<ul>
<li class='toc-categories'>
<a class="expand-toc-icon" href="javascript:void(0);"><i class="fa fa-bars"></i></a>
</li>
<li class="logo"><a href="/"></a></li>
<li class='expand-menu'>
<a href="javascript:void(0);"><span class='menu-text'>Menu</span><span class='expand-icon'><i class="fa fa-bars"></i></span></a>
</li>
<li class="clear-float"></li>
<li class="nav">
<a>Language</a>
<ul>
<li>
<a style="font-weight: bold;" href="/docs/string-manipulation/" >en</a>
</li>
<li>
<a href="/zh/docs/string-manipulation/" >zh</a>
</li>
</ul>
</li>
<li class="apache-link">
<a href="/apacheASF/">Apache</a>
</li>
<li class="poweredby">
<a href="/poweredBy">Powered By</a>
</li>
<li class="documentation-menu">
<a href="/docs/">Documentation</a>
<ul>
<li><a href="/docs/getting-started/">Getting Started</a></li>
<li><a href="/docs/architecture/">Architecture</a></li>
<li><a href="/docs/tutorials/">Tutorials</a></li>
<li><a href="/docs/drill-on-yarn/">Drill-on-YARN</a></li>
<li><a href="/docs/install-drill/">Install Drill</a></li>
<li><a href="/docs/configure-drill/">Configure Drill</a></li>
<li><a href="/docs/connect-a-data-source/">Connect a Data Source</a></li>
<li><a href="/docs/odbc-jdbc-interfaces/">ODBC/JDBC Interfaces</a></li>
<li><a href="/docs/query-data/">Query Data</a></li>
<li><a href="/docs/performance-tuning/">Performance Tuning</a></li>
<li><a href="/docs/log-and-debug/">Log and Debug</a></li>
<li><a href="/docs/sql-reference/">SQL Reference</a></li>
<li><a href="/docs/data-sources-and-file-formats/">Data Sources and File Formats</a></li>
<li><a href="/docs/develop-custom-functions/">Develop Custom Functions</a></li>
<li><a href="/docs/troubleshooting/">Troubleshooting</a></li>
<li><a href="/docs/developer-information/">Developer Information</a></li>
<li><a href="/docs/release-notes/">Release Notes</a></li>
<li><a href="/docs/sample-datasets/">Sample Datasets</a></li>
<li><a href="/docs/project-bylaws/">Project Bylaws</a></li>
<li><a href="/docs/ecosystem/">Ecosystem</a></li>
</ul>
</li>
<li class='nav'>
<a href="/community-resources/">Community</a>
<ul>
<li><a href="/team/">Team</a></li>
<li><a href="/mailinglists/">Mailing Lists</a></li>
<li><a href="/community-resources/">Community Resources</a></li>
</ul>
</li>
<li class='nav'><a href="/faq/">FAQ</a></li>
<li class='nav'><a href="/blog/">Blog</a></li>
<li class="social-menu-item"><a href="https://twitter.com/apachedrill" title="apachedrill on twitter" target="_blank"><img src="/images/twitter_32_26_white.png" alt="twitter logo" align="center"></a> </li>
<li class="social-menu-item"><a href="https://join.slack.com/t/apache-drill/shared_invite/enQtNTQ4MjM1MDA3MzQ2LTJlYmUxMTRkMmUwYmQ2NTllYmFmMjU4MDk0NjYwZjBmYjg0MDZmOTE2ZDg0ZjBlYmI3Yjc4Y2I2NTQyNGVlZTc" title="Apache Drill Slack channels"
target="_blank"><img src="/images/slack-logo.svg" alt="Slack logo" align="center"></a> </li>
<li class='search-bar'>
<form id="drill-search-form">
<input type="text" placeholder="Search Apache Drill" id="drill-search-term" />
<button type="submit">
<i class="fa fa-search"></i>
</button>
</form>
</li>
<li class="d">
<a href="/download/">
<i class="fa fa-cloud-download"></i> Download
</a>
</li>
</ul>
</div>
<link href="/css/content.css" rel="stylesheet" type="text/css">
<aside class="sidebar">
<div class="docsidebar">
<div class="docsidebarwrapper">
<ul style="display: block;">
<li class="toctree-l1"><a href="javascript: void(0);">Getting Started</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/drill-introduction/">Drill Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/why-drill/">Why Drill</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Architecture</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/architecture-introduction/">Architecture Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/drill-query-execution/">Drill Query Execution</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/core-modules/">Core Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/performance/">Performance</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Tutorials</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/tutorials-introduction/">Tutorials Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/drill-in-10-minutes/">Drill in 10 Minutes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/analyzing-the-yelp-academic-dataset/">Analyzing the Yelp Academic Dataset</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Learn Drill with the MapR Sandbox</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/about-the-mapr-sandbox/">About the MapR Sandbox</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/installing-the-apache-drill-sandbox/">Installing the Apache Drill Sandbox</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/getting-to-know-the-drill-sandbox/">Getting to Know the Drill Sandbox</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/lesson-1-learn-about-the-data-set/">Lesson 1: Learn about the Data Set</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/lesson-2-run-queries-with-ansi-sql/">Lesson 2: Run Queries with ANSI SQL</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/lesson-3-run-queries-on-complex-data-types/">Lesson 3: Run Queries on Complex Data Types</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/summary/">Summary</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/analyzing-highly-dynamic-datasets/">Analyzing Highly Dynamic Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/analyzing-social-media/">Analyzing Social Media</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/analyzing-data-using-window-functions/">Analyzing Data Using Window Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/orchestrating-queries-with-airflow/">Orchestrating queries with Airflow</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Drill-on-YARN</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/drill-on-yarn-introduction/">Drill-on-YARN Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/creating-a-basic-drill-cluster/">Creating a Basic Drill Cluster</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/launch-drill-under-yarn/">Launch Drill Under YARN</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/configuration-reference/">Configuration Reference</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/drill-on-yarn-command-line-tool/">Drill-on-YARN Command-Line Tool</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/using-the-drill-on-yarn-web-ui/">Using the Drill-on-YARN Web UI</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/multiple-drill-clusters/">Multiple Drill Clusters</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/enabling-web-ui-security/">Enabling Web UI Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/appendix-a-release-note-issues/">Appendix A: Release Note Issues</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/appendix-b-drill-env-sh-settings/">Appendix B: drill-env.sh Settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/appendix-c-troubleshooting/">Appendix C: Troubleshooting</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/appendix-d-recreate-the-drill-archive/">Appendix D: Recreate the Drill Archive</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Install Drill</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/install-drill-introduction/">Install Drill Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/migrating-parquet-data/">Migrating Parquet Data</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Installing Drill in Embedded Mode</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/embedded-mode-prerequisites/">Embedded Mode Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/running-drill-on-docker/">Running Drill on Docker</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/installing-drill-on-linux-and-mac-os-x/">Installing Drill on Linux and Mac OS X</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/starting-drill-on-linux-and-mac-os-x/">Starting Drill on Linux and Mac OS X</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/installing-drill-on-windows/">Installing Drill on Windows</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/starting-drill-on-windows/">Starting Drill on Windows</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Installing Drill in Distributed Mode</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/distributed-mode-prerequisites/">Distributed Mode Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/installing-drill-on-the-cluster/">Installing Drill on the Cluster</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/starting-drill-in-distributed-mode/">Starting Drill in Distributed Mode</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/starting-the-web-ui/">Starting the Web UI</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/stopping-drill/">Stopping Drill</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/identifying-multiple-drill-versions-in-a-cluster/">Identifying Multiple Drill Versions in a Cluster</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Configure Drill</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/configure-drill-introduction/">Configure Drill Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/configuring-drill-memory/">Configuring Drill Memory</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Securing Drill</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/securing-drill-introduction/">Securing Drill Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/secure-communication-paths/">Secure Communication Paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/roles-and-privileges/">Roles and Privileges</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-user-impersonation/">Configuring User Impersonation</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-inbound-impersonation/">Configuring Inbound Impersonation</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-user-impersonation-with-hive-authorization/">Configuring User Impersonation with Hive Authorization</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-user-security/">Configuring User Security</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-plain-security/">Configuring Plain Security</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-ssl-tls-for-encryption/">Configuring SSL/TLS for Encryption</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-libpam4j-as-the-pam-authenticator/">Using libpam4j as the PAM Authenticator</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-jpam-as-the-pam-authenticator/">Using jpam as the PAM Authenticator</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-kerberos-security/">Configuring Kerberos Security</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-drill-to-use-spnego-for-http-authentication/">Configuring Drill to use SPNEGO for HTTP Authentication</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-web-ui-and-rest-api-security/">Configuring Web UI and REST API Security</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-custom-acls-to-secure-znodes/">Configuring Custom ACLs to Secure znodes</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Configuring a Multitenant Cluster</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-a-multitenant-cluster-introduction/">Configuring a Multitenant Cluster Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-multitenant-resources/">Configuring Multitenant Resources</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-resources-for-a-shared-drillbit/">Configuring Resources for a Shared Drillbit</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Configuration Options</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/configuration-options-introduction/">Configuration Options Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/start-up-options/">Start-Up Options</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/planning-and-execution-options/">Planning and Execution Options</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/persistent-configuration-storage/">Persistent Configuration Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/global-query-list/">Global Query List</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/ports-used-by-drill/">Ports Used by Drill</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/configuring-the-drill-shell/">Configuring the Drill Shell</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/configuring-cgroups-to-control-cpu-usage/">Configuring cgroups to Control CPU Usage</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Connect a Data Source</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/connect-a-data-source-introduction/">Connect a Data Source Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/storage-plugin-registration/">Storage Plugin Registration</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Storage Plugin Configuration</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/plugin-configuration-basics/">Plugin Configuration Basics</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-storage-plugins/">Configuring Storage Plugins</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/workspaces/">Workspaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/drill-default-input-format/">Drill Default Input Format</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/file-system-storage-plugin/">File System Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/hbase-storage-plugin/">HBase Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/hive-storage-plugin/">Hive Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/rdbms-storage-plugin/">RDBMS Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/mongodb-storage-plugin/">MongoDB Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/mapr-db-format/">MapR-DB Format</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/s3-storage-plugin/">S3 Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/opentsdb-storage-plugin/">OpenTSDB Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/kafka-storage-plugin/">Kafka Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/azure-blob-storage-plugin/">Azure Blob Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/druid-storage-plugin/">Druid Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/http-storage-plugin/">HTTP Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/elasticsearch-storage-plugin/">ElasticSearch Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/splunk-storage-plugin/">Splunk Storage Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/cassandra-storage-plugin/">Cassandra Storage Plugin</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">ODBC/JDBC Interfaces</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/interfaces-introduction/">Interfaces Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/using-the-jdbc-driver/">Using the JDBC Driver</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/using-jdbc-with-squirrel-on-windows/">Using JDBC with SQuirreL on Windows</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Installing the ODBC Driver</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/installing-the-driver-on-linux/">Installing the Driver on Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/installing-the-driver-on-mac-os-x/">Installing the Driver on Mac OS X</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/installing-the-driver-on-windows/">Installing the Driver on Windows</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Configuring ODBC</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/odbc-configuration-reference/">ODBC Configuration Reference</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/logging-and-tracing/">Logging and Tracing</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-odbc-on-linux/">Configuring ODBC on Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-odbc-on-mac-os-x/">Configuring ODBC on Mac OS X</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-odbc-on-windows/">Configuring ODBC on Windows</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/testing-the-odbc-connection/">Testing the ODBC Connection</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Using Drill Explorer</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/drill-explorer-introduction/">Drill Explorer Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/connecting-drill-explorer-to-data/">Connecting Drill Explorer to Data</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/browsing-data-and-defining-views/">Browsing Data and Defining Views</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Using Drill with BI Tools</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/using-drill-with-bi-tools-introduction/">Using Drill with BI Tools Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/tableau-examples/">Tableau Examples</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-microstrategy-analytics-with-apache-drill/">Using MicroStrategy Analytics with Apache Drill</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-tibco-spotfire-desktop-with-drill/">Using Tibco Spotfire Desktop with Drill</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-tibco-spotfire-server-with-drill/">Configuring Tibco Spotfire Server with Drill</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-qlik-sense-with-drill/">Using Qlik Sense with Drill</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-apache-drill-with-tableau-10-2/">Using Apache Drill with Tableau 10.2</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-apache-drill-with-tableau-9-desktop/">Using Apache Drill with Tableau 9 Desktop</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-apache-drill-with-tableau-9-server/">Using Apache Drill with Tableau 9 Server</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-information-builders-webfocus-with-apache-drill/">Using Information Builders’ WebFOCUS with Apache Drill</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-jreport-with-drill/">Configuring JReport with Drill</a></li>
</ul>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Query Data</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/query-data-introduction/">Query Data Introduction</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Querying a File System</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-a-file-system-introduction/">Querying a File System Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-avro-files/">Querying Avro Files</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-json-files/">Querying JSON Files</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-parquet-files/">Querying Parquet Files</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-plain-text-files/">Querying Plain Text Files</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-directories/">Querying Directories</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-sequence-files/">Querying Sequence Files</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/querying-hbase/">Querying HBase</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Querying Complex Data</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-complex-data-introduction/">Querying Complex Data Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/sample-data-donuts/">Sample Data: Donuts</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/selecting-flat-data/">Selecting Flat Data</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/using-sql-functions-clauses-and-joins/">Using SQL Functions, Clauses, and Joins</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/selecting-nested-data-for-a-column/">Selecting Nested Data for a Column</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/selecting-multiple-columns-within-nested-data/">Selecting Multiple Columns Within Nested Data</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/querying-hive/">Querying Hive</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/querying-the-information-schema/">Querying the INFORMATION SCHEMA</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Querying Indexes</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/querying-indexes-introduction/">Querying Indexes Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/queries-that-qualify-for-index-based-query-plans/">Queries that Qualify for Index-Based Query Plans</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/types-of-indexes/">Types of Indexes</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/index-selection/">Index Selection</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/designing-indexes-for-your-queries/">Designing Indexes for Your Queries</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/configuring-index-planning/">Configuring Index Planning</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/verifying-index-use/">Verifying Index Use</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/querying-system-tables/">Querying System Tables</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/monitoring-and-canceling-queries-in-the-drill-web-ui/">Monitoring and Canceling Queries in the Drill Web UI</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Performance Tuning</a></li>
<ul style="display: none">
<li class="toctree-l2"><a href="javascript: void(0);">Drill Metastore</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/using-drill-metastore/">Using Drill Metastore</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/drill-iceberg-metastore/">Drill Iceberg Metastore</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/rdbms-metastore/">RDBMS Metastore</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/performance-tuning-introduction/">Performance Tuning Introduction</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Partition Pruning</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/partition-pruning-introduction/">Partition Pruning Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/how-to-partition-data/">How to Partition Data</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/asynchronous-parquet-reader/">Asynchronous Parquet Reader</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/optimizing-parquet-metadata-reading/">Optimizing Parquet Metadata Reading</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/parquet-filter-pushdown/">Parquet Filter Pushdown</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/hive-metadata-caching/">Hive Metadata Caching</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/choosing-a-storage-format/">Choosing a Storage Format</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Query Plans and Tuning</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/query-plans-and-tuning-introduction/">Query Plans and Tuning Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/join-planning-guidelines/">Join Planning Guidelines</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/guidelines-for-optimizing-aggregation/">Guidelines for Optimizing Aggregation</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/modifying-query-planning-options/">Modifying Query Planning Options</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/sort-based-and-hash-based-memory-constrained-operators/">Sort-Based and Hash-Based Memory-Constrained Operators</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/enabling-query-queuing/">Enabling Query Queuing</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/throttling/">Throttling</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/controlling-parallelization-to-balance-performance-with-multi-tenancy/">Controlling Parallelization to Balance Performance with Multi-Tenancy</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Identifying Performance Issues</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/query-plans/">Query Plans</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/query-profiles/">Query Profiles</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Performance Tuning Reference</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/query-profile-column-descriptions/">Query Profile Column Descriptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/physical-operators/">Physical Operators</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/monitoring-metrics/">Monitoring Metrics</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Log and Debug</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/log-and-debug-introduction/">Log and Debug Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/error-messages/">Error Messages</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/modify-logback-xml/">Modify logback.xml</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/review-the-java-stack-trace/">Review the Java Stack Trace</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/query-audit-logging/">Query Audit Logging</a></li>
</ul>
<li class="toctree-l1 current_section "><a href="javascript: void(0);">SQL Reference</a></li>
<ul class="current_section">
<li class="toctree-l2"><a class="reference internal" href="/docs/sql-reference-introduction/">SQL Reference Introduction</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Data Types</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/supported-data-types/">Supported Data Types</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/date-time-and-timestamp/">Date, Time, and Timestamp</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/handling-different-data-types/">Handling Different Data Types</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/lexical-structure/">Lexical Structure</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/operators/">Operators</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">SQL Functions</a></li>
<ul style="">
<li class="toctree-l3"><a class="reference internal" href="/docs/about-sql-function-examples/">About SQL Function Examples</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/math-and-trig/">Math and Trig</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/data-type-conversion/">Data Type Conversion</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/data-type-functions/">Data Type Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/date-time-functions-and-arithmetic/">Date/Time Functions and Arithmetic</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="/docs/string-manipulation/">String Manipulation</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/aggregate-and-aggregate-statistical/">Aggregate and Aggregate Statistical</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/functions-for-handling-nulls/">Functions for Handling Nulls</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/phonetic-functions/">Phonetic Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/string-distance-functions/">String Distance Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/cryptography-functions/">Cryptography Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/sql-dialect-compatibility-functions/">SQL dialect compatibility functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/gis-functions/">GIS functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/time-series-analysis-functions/">Time Series Analysis Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/ip-networking-functions/">IP Networking functions</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">SQL Window Functions</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/sql-window-functions-introduction/">SQL Window Functions Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/aggregate-window-functions/">Aggregate Window Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/ranking-window-functions/">Ranking Window Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/value-window-functions/">Value Window Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/sql-window-functions-examples/">SQL Window Functions Examples</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Nested Data Functions</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/nested-data-limitations/">Nested Data Limitations</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/flatten/">FLATTEN</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/kvgen/">KVGEN</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/repeated-count/">REPEATED_COUNT</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/repeated-contains/">REPEATED_CONTAINS</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/query-directory-functions/">Query Directory Functions</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">SQL Commands</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/supported-sql-commands/">Supported SQL Commands</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/analyze-table-refresh-metadata/">ANALYZE TABLE REFRESH METADATA</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/analyze-table-compute-statistics/">ANALYZE TABLE COMPUTE STATISTICS</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/set/">SET</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/refresh-table-metadata/">REFRESH TABLE METADATA</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/reset/">RESET</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/alter-system/">ALTER SYSTEM</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/create-or-replace-schema/">CREATE OR REPLACE SCHEMA</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/create-table-as-ctas/">CREATE TABLE AS (CTAS)</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/create-temporary-table-as-cttas/">CREATE TEMPORARY TABLE AS (CTTAS)</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/create-function-using-jar/">CREATE FUNCTION USING JAR</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/partition-by-clause/">PARTITION BY Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/create-view/">CREATE VIEW</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/describe/">DESCRIBE</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/drop-function-using-jar/">DROP FUNCTION USING JAR</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/drop-table/">DROP TABLE</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/drop-view/">DROP VIEW</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/explain/">EXPLAIN</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/lateral-join/">LATERAL Join</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/select/">SELECT</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/select-list/">SELECT List</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/from-clause/">FROM Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/group-by-clause/">GROUP BY Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/having-clause/">HAVING Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/limit-clause/">LIMIT Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/offset-clause/">OFFSET Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/order-by-clause/">ORDER BY Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/union-set-operator/">UNION Set Operator</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/where-clause/">WHERE Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/with-clause/">WITH Clause</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/show-databases-and-show-schemas/">SHOW DATABASES and SHOW SCHEMAS</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/show-files/">SHOW FILES</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/show-tables/">SHOW TABLES</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/use/">USE</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">SQL Conditional Expressions</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/case/">CASE</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/reserved-keywords/">Reserved Keywords</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/sql-extensions/">SQL Extensions</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Data Sources and File Formats</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/data-sources-and-file-formats-introduction/">Data Sources and File Formats Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/hive-to-drill-data-type-mapping/">Hive-to-Drill Data Type Mapping</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/deploying-and-using-a-hive-udf/">Deploying and Using a Hive UDF</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/parquet-format/">Parquet Format</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/logfile-plugin/">Logfile Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/json-data-model/">JSON Data Model</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/text-files-csv-tsv-psv/">Text Files: CSV, TSV, PSV</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/sequence-files/">Sequence Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/httpd-format-plugin/">HTTPD Format Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/image-metadata-format-plugin/">Image Metadata Format Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/syslog-format-plugin/">Syslog Format Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/ltsv-format-plugin/">LTSV Format Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/spss-format-plugin/">SPSS Format Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/esri-shapefile-format-plugin/">ESRI Shapefile Format Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/excel-format-plugin/">Excel Format Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/hdf5-format-plugin/">HDF5 Format Plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/xml-format-plugin/">XML Format Plugin</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Develop Custom Functions</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/develop-custom-functions-introduction/">Develop Custom Functions Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/developing-a-simple-function/">Developing a Simple Function</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/tutorial-develop-a-simple-function/">Tutorial: Develop a Simple Function</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/developing-an-aggregate-function/">Developing an Aggregate Function</a></li>
<li class="toctree-l2"><a href="javascript: void(0);">Adding Custom Functions to Drill</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/adding-custom-functions-to-drill-introduction/">Adding Custom Functions to Drill Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/manually-adding-custom-functions-to-drill/">Manually Adding Custom Functions to Drill</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/creating-custom-authenticators/">Creating Custom Authenticators</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/dynamic-udfs/">Dynamic UDFs</a></li>
</ul>
<li class="toctree-l2"><a class="reference internal" href="/docs/using-custom-functions-in-queries/">Using Custom Functions in Queries</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/custom-function-interfaces/">Custom Function Interfaces</a></li>
</ul>
<li class="toctree-l1"><a class="reference internal" href="/docs/troubleshooting/">Troubleshooting</a></li>
<li class="toctree-l1"><a href="javascript: void(0);">Developer Information</a></li>
<ul style="display: none">
<li class="toctree-l2"><a href="javascript: void(0);">REST API</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/rest-api-introduction/">REST API Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/submitting-queries-from-the-rest-api-when-impersonation-is-enabled-and-authentication-is-disabled/">Submitting Queries from the REST API when Impersonation is Enabled and Authentication is Disabled</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/use-postman-to-run-sql-queries-on-drill-data-sources/">Use Postman to Run SQL Queries on Drill Data Sources</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Develop Drill</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/compiling-drill-from-source/">Compiling Drill from Source</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/useful-information-for-drill-developers/">Useful Information for Drill Developers</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Contribute to Drill</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/apache-drill-contribution-guidelines/">Apache Drill Contribution Guidelines</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/apache-drill-contribution-ideas/">Apache Drill Contribution Ideas</a></li>
</ul>
<li class="toctree-l2"><a href="javascript: void(0);">Design Docs</a></li>
<ul style="display: none">
<li class="toctree-l3"><a class="reference internal" href="/docs/drill-plan-syntax/">Drill Plan Syntax</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/rpc-overview/">RPC Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/query-stages/">Query Stages</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/useful-research/">Useful Research</a></li>
<li class="toctree-l3"><a class="reference internal" href="/docs/value-vectors/">Value Vectors</a></li>
</ul>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Release Notes</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-19-0-release-notes/">Apache Drill 1.19.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-18-0-release-notes/">Apache Drill 1.18.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-17-0-release-notes/">Apache Drill 1.17.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-16-0-release-notes/">Apache Drill 1.16.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-15-0-release-notes/">Apache Drill 1.15.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-14-0-release-notes/">Apache Drill 1.14.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-13-0-release-notes/">Apache Drill 1.13.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-12-0-release-notes/">Apache Drill 1.12.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-11-0-release-notes/">Apache Drill 1.11.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-10-0-release-notes/">Apache Drill 1.10.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-9-0-release-notes/">Apache Drill 1.9.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-8-0-release-notes/">Apache Drill 1.8.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-7-0-release-notes/">Apache Drill 1.7.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-6-0-release-notes/">Apache Drill 1.6.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-5-0-release-notes/">Apache Drill 1.5.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-4-0-release-notes/">Apache Drill 1.4.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-3-0-release-notes/">Apache Drill 1.3.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-2-0-release-notes/">Apache Drill 1.2.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-1-0-release-notes/">Apache Drill 1.1.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-1-0-0-release-notes/">Apache Drill 1.0.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-0-9-0-release-notes/">Apache Drill 0.9.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-0-8-0-release-notes/">Apache Drill 0.8.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-0-7-0-release-notes/">Apache Drill 0.7.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-0-6-0-release-notes/">Apache Drill 0.6.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-0-5-0-release-notes/">Apache Drill 0.5.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-0-4-0-release-notes/">Apache Drill 0.4.0 Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/apache-drill-m1-release-notes-apache-drill-alpha/">Apache Drill M1 Release Notes (Apache Drill Alpha)</a></li>
</ul>
<li class="toctree-l1"><a href="javascript: void(0);">Sample Datasets</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/enron-emails/">Enron Emails</a></li>
<li class="toctree-l2"><a class="reference internal" href="/docs/wikipedia-edit-history/">Wikipedia Edit History</a></li>
</ul>
<li class="toctree-l1"><a class="reference internal" href="/docs/project-bylaws/">Project Bylaws</a></li>
<li class="toctree-l1"><a href="javascript: void(0);">Ecosystem</a></li>
<ul style="display: none">
<li class="toctree-l2"><a class="reference internal" href="/docs/using-saiku-analytics-with-apache-drill/">Using Saiku Analytics with Apache Drill</a></li>
</ul>
</ul>
</div>
</div>
</aside>
<nav class="breadcrumbs">
<li><a href="/docs/">Docs</a></li>
<li><a href="/docs/sql-reference/">SQL Reference</a></li>
<li><a href="/docs/sql-functions/">SQL Functions</a></li>
<li>String Manipulation</li>
</nav>
<div class="main-content-wrapper">
<div class="main-content">
<a class="edit-link" href="https://github.com/apache/drill/blob/gh-pages/_docs/en/sql-reference/sql-functions/040-string-manipulation.md" target="_blank"><i class="fa fa-pencil-square-o"></i></a>
<div class="int_title left">
<h1>String Manipulation</h1>
</div>
<!-- jt: we don't need to display a last-modified date on each page to users
-->
<div class="int_text" align="left">
<p>You can use the following string functions in Drill queries:</p>
<table>
<thead>
<tr>
<th>Function</th>
<th>Return Type</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/docs/string-manipulation/#byte_substr">BYTE_SUBSTR</a></td>
<td>BINARY or VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#char_length">CHAR_LENGTH</a></td>
<td>INTEGER</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#concat">CONCAT</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#ilike">ILIKE</a></td>
<td>BOOLEAN</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#initcap">INITCAP</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#length">LENGTH</a></td>
<td>INTEGER</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#like">LIKE</a></td>
<td>BOOLEAN</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#lower">LOWER</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#lpad">LPAD</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#ltrim">LTRIM</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#position">POSITION</a></td>
<td>INTEGER</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#regexp_matches">REGEXP_MATCHES</a></td>
<td>BOOLEAN</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#regexp_replace">REGEXP_REPLACE</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#repeat">REPEAT</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#replace">REPLACE</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#reverse">REVERSE</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#rpad">RPAD</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#rtrim">RTRIM</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#split">SPLIT</a></td>
<td>INTEGER</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#split_part">SPLIT_PART</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#strpos">STRPOS</a></td>
<td>INTEGER</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#substr">SUBSTR</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#toascii">TOASCII</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#trim">TRIM</a></td>
<td>VARCHAR</td>
</tr>
<tr>
<td><a href="/docs/string-manipulation/#upper">UPPER</a></td>
<td>VARCHAR</td>
</tr>
</tbody>
</table>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">
As is the case for indexes througout SQL, indexes into character strings are 1-based.
</p>
</div>
<h2 id="byte_substr">BYTE_SUBSTR</h2>
<p>Returns in binary format a substring of the input string.</p>
<h3 id="byte_substr-syntax">BYTE_SUBSTR Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>BYTE_SUBSTR( string-expression, start [, length [(string-expression)]] )
</code></pre></div></div>
<p><em>string-expression</em> is the entire string, a column name having string values for example.
<em>start</em> is a start position in the string. 1 is the first position.
<em>length</em> is the number of characters to the right of the start position to include in the output expressed in either of the following ways:</p>
<ul>
<li>As an integer. For example, 19 includes 19 characters to the right of the start position in the output.</li>
<li>AS length(string-expression). For example, length(my_string) includes the number of characters in my_string minus the number of the start position.</li>
</ul>
<h3 id="byte_substr-usage-notes">BYTE_SUBSTR Usage Notes</h3>
<p>Combine the use of BYTE_SUBSTR and CONVERT_FROM to separate parts of a HBase composite key for example.</p>
<h3 id="byte_substr-examples">BYTE_SUBSTR Examples</h3>
<p>A composite HBase row key consists of strings followed by a reverse timestamp (long). For example: AMZN_9223370655563575807. Use BYTE_SUBSTR and CONVERT_FROM to separate parts of a HBase composite key.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT CONVERT_FROM(BYTE_SUBSTR(row_key,6,19),'UTF8') FROM root.`mydata` LIMIT 1;
|---------------------|
| EXPR$0 |
|---------------------|
| 9223370655563575807 |
|---------------------|
1 rows selected (0.271 seconds)
SELECT CONVERT_FROM(BYTE_SUBSTR(row_key,6,length(row_key)),'UTF8') FROM root.`mydata` LIMIT 1;
|---------------------|
| EXPR$0 |
|---------------------|
| 9223370655563575807 |
|---------------------|
1 rows selected (0.271 seconds)
</code></pre></div></div>
<h2 id="char_length">CHAR_LENGTH</h2>
<p>Returns the number of characters in the input string.</p>
<h3 id="char_length-syntax">CHAR_LENGTH Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CHAR_LENGTH(string)
</code></pre></div></div>
<h3 id="char_length-usage-notes">CHAR_LENGTH Usage Notes</h3>
<p>You can use the alias CHARACTER_LENGTH.</p>
<h3 id="char_length-example">CHAR_LENGTH Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT CHAR_LENGTH('Drill rocks') FROM (VALUES(1));
|------------|
| EXPR$0 |
|------------|
| 11 |
|------------|
1 row selected (0.127 seconds)
</code></pre></div></div>
<h2 id="concat">CONCAT</h2>
<p>Concatenates arguments.</p>
<h3 id="concat-syntax">CONCAT Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CONCAT(string [, string [, ...] )
</code></pre></div></div>
<h3 id="concat-example">CONCAT Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT CONCAT('Drill', ' ', 1.0, ' ', 'release') FROM (VALUES(1));
|-------------------|
| EXPR$0 |
|-------------------|
| Drill 1.0 release |
|-------------------|
1 row selected (0.134 seconds)
</code></pre></div></div>
<p>Alternatively, you can use the <a href="/docs/operators/#string-concatenate-operator">string concatenation operation</a> to concatenate strings.</p>
<h2 id="ilike">ILIKE</h2>
<p>Performs a case-insensitive comparison of the input string with a pattern and returns
true in the case of a match.</p>
<h3 id="ilike-syntax">ILIKE Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ILIKE(string, pattern)
</code></pre></div></div>
<h3 id="ilike-examples">ILIKE Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT ILIKE('abcde', 'ABC%') FROM (VALUES(1));
|--------|
| EXPR$0 |
|--------|
| true |
|--------|
1 row selected (0.185 seconds)
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT ILIKE(last_name, 'Spence') FROM cp.`employee.json` limit 3;
|--------|
| EXPR$0 |
|--------|
| false |
| false |
| true |
|--------|
3 rows selected (0.17 seconds)
</code></pre></div></div>
<h2 id="initcap">INITCAP</h2>
<p>Returns the string using initial caps.</p>
<h3 id="initcap-syntax">INITCAP Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>INITCAP(string)
</code></pre></div></div>
<h3 id="initcap-examples">INITCAP Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT INITCAP('apache drill release 1.0') FROM (VALUES(1));
|--------------------------|
| EXPR$0 |
|--------------------------|
| Apache Drill Release 1.0 |
|--------------------------|
1 row selected (0.106 seconds)
</code></pre></div></div>
<h2 id="length">LENGTH</h2>
<p>Returns the number of characters in the string.</p>
<h3 id="length-syntax">LENGTH Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LENGTH( string [, encoding] )
</code></pre></div></div>
<h3 id="length-example">LENGTH Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT LENGTH('apache drill release 1.0') FROM (VALUES(1));
|------------|
| EXPR$0 |
|------------|
| 24 |
|------------|
1 row selected (0.127 seconds)
SELECT LENGTH(row_key, 'UTF8') FROM root.`students`;
|------------|
| EXPR$0 |
|------------|
| 8 |
| 8 |
| 8 |
| 8 |
|------------|
4 rows selected (0.259 seconds)
</code></pre></div></div>
<h2 id="like">LIKE</h2>
<p>Performs a case-sensitive comparison of the input string with a pattern and returns
true in the case of a match.</p>
<h3 id="like-syntax">LIKE Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LIKE(string, pattern)
</code></pre></div></div>
<h3 id="like-examples">LIKE Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT LIKE('abcde', 'ABC%') FROM (VALUES(1));
|--------|
| EXPR$0 |
|--------|
| false |
|--------|
1 row selected (0.185 seconds)
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT LIKE(last_name, 'Spence') FROM cp.`employee.json` limit 3;
|--------|
| EXPR$0 |
|--------|
| false |
| false |
| true |
|--------|
3 rows selected (0.17 seconds)
</code></pre></div></div>
<p>Alternatively, you can use the <a href="/docs/operators/#pattern-matching-operators">like operator</a> to compare a string with a pattern.</p>
<h2 id="lower">LOWER</h2>
<p>Converts the characters in the input string to lowercase.</p>
<h3 id="lower-syntax">LOWER Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LOWER (string)
</code></pre></div></div>
<h3 id="lower-example">LOWER Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT LOWER('Apache Drill') FROM (VALUES(1));
|---------------|
| EXPR$0 |
|---------------|
| apache drill |
|---------------|
1 row selected (0.103 seconds)
</code></pre></div></div>
<h2 id="lpad">LPAD</h2>
<p>Pads the string to the length specified by prepending the fill or a space. Truncates the string if it is longer than the specified length.
.</p>
<h3 id="lpad-syntax">LPAD Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LPAD (string, length [, fill text])
</code></pre></div></div>
<h3 id="lpad-example">LPAD Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT LPAD('Release 1.0', 27, 'of Apache Drill 1.0') FROM (VALUES(1));
|------------------------------|
| EXPR$0 |
|------------------------------|
| of Apache Drill Release 1.0 |
|------------------------------|
1 row selected (0.132 seconds)
</code></pre></div></div>
<h2 id="ltrim">LTRIM</h2>
<p>Removes any characters from the beginning of string1 that match the characters in string2.</p>
<h3 id="ltrim-syntax">LTRIM Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LTRIM(string1, string2)
</code></pre></div></div>
<h3 id="ltrim-examples">LTRIM Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT LTRIM('Apache Drill', 'Apache ') FROM (VALUES(1));
|------------|
| EXPR$0 |
|------------|
| Drill |
|------------|
1 row selected (0.131 seconds)
SELECT LTRIM('A powerful tool Apache Drill', 'Apache ') FROM (VALUES(1));
|----------------------------|
| EXPR$0 |
|----------------------------|
| owerful tool Apache Drill |
|----------------------------|
1 row selected (0.1 seconds)
</code></pre></div></div>
<h2 id="position">POSITION</h2>
<p>Returns the location of the first occurrence of a substring of the input string, or 0 if the substring does not occur.</p>
<h3 id="position-syntax">POSITION Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>POSITION('substring' in 'string')
</code></pre></div></div>
<h3 id="position-example">POSITION Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT POSITION('c' in 'Apache Drill') FROM (VALUES(1));
|------------|
| EXPR$0 |
|------------|
| 4 |
|------------|
1 row selected (0.12 seconds)
</code></pre></div></div>
<h2 id="regexp_matches">REGEXP_MATCHES</h2>
<p>Matches a regexp pattern to a target string. Returns a boolean value: true if the value matches the regexp, false if the value does not match the regexp.</p>
<h3 id="regexp_matches-syntax">REGEXP_MATCHES Syntax</h3>
<p>REGEXP_MATCHES(string_expression, pattern)</p>
<p><em>string_expression</em> is the string to be matched.</p>
<p><em>pattern</em> is the regular expression.</p>
<h3 id="regexp_matches-examples">REGEXP_MATCHES Examples</h3>
<p>Shows several POSIX metacharacters that return true for the given string expressions:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>select regexp_matches('abc', 'abc|def') as a, regexp_matches('cat', '[hc]at$') as b, regexp_matches('cat', '.at') as c, regexp_matches('cat', '[hc]at') as d, regexp_matches('cat', '[^b]at') as e, regexp_matches('cat', '^[hc]at') as f, regexp_matches('[a]', '\[.\]') as g, regexp_matches('sat', 's.*') as h, regexp_matches('sat','[^hc]at') as i, regexp_matches('hat', '[hc]?at') as j, regexp_matches('cchchat', '[hc]*at') as k, regexp_matches('chat', '[hc]+at') as l;
|------|------|------|------|------|------|------|------|------|------|------|------|
| a | b | c | d | e | f | g | h | i | j | k | l |
|------|------|------|------|------|------|------|------|------|------|------|------|
| true | true | true | true | true | true | true | true | true | true | true | true |
|------|------|------|------|------|------|------|------|------|------|------|------|
</code></pre></div></div>
<p>Shows case-sensitivity:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>select regexp_matches('abc', 'A*.C');
|--------|
| EXPR$0 |
|--------|
| false |
|--------|
select regexp_matches('abc', 'a*.c');
|--------|
| EXPR$0 |
|--------|
| true |
|--------|
</code></pre></div></div>
<h2 id="regexp_replace">REGEXP_REPLACE</h2>
<p>Substitutes new text for substrings that match <a href="http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html">Java regular expression patterns</a>.</p>
<h3 id="regexp_replace-syntax">REGEXP_REPLACE Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>REGEXP_REPLACE(source_char, pattern, replacement)
</code></pre></div></div>
<p><em>source</em> is the character expression to be replaced.</p>
<p><em>pattern</em> is the regular expression.</p>
<p><em>replacement</em> is the string to substitute for the source.</p>
<h3 id="regexp_replace-usage-notes">REGEXP_REPLACE Usage Notes</h3>
<p>Capturing groups may defined in <em>pattern</em> using parentheses <code class="language-plaintext highlighter-rouge">(...)</code> and referenced by number from <em>replacement</em> using <code class="language-plaintext highlighter-rouge">$1</code>, <code class="language-plaintext highlighter-rouge">$2</code>, etc.</p>
<h3 id="regexp_replace-examples">REGEXP_REPLACE Examples</h3>
<p>Replace a’s with b’s in this string.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT REGEXP_REPLACE('abc, acd, ade, aef', 'a', 'b') FROM (VALUES(1));
|---------------------|
| EXPR$0 |
|---------------------|
| bbc, bcd, bde, bef |
|---------------------|
1 row selected (0.105 seconds)
</code></pre></div></div>
<p>Use the regular expression <em>a</em> followed by a period (.) in the same query to replace all a’s and the subsequent character.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT REGEXP_REPLACE('abc, acd, ade, aef', 'a.','b') FROM (VALUES(1));
|----------------|
| EXPR$0 |
|----------------|
| bc, bd, be, bf |
|----------------|
1 row selected (0.113 seconds)
</code></pre></div></div>
<p>Extract the text inside double quotes using a capturing group.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT REGEXP_REPLACE('The quick "brown fox" jumps over...', '.*"(.*)".*', '$1') FROM (VALUES(1));
|-----------|
| EXPR$0 |
|-----------|
| brown fox |
|-----------|
</code></pre></div></div>
<h2 id="repeat">REPEAT</h2>
<p>Returns the input string repeated the specified number of times.</p>
<h3 id="repeat-syntax">REPEAT Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>REPEAT(string, n_times)
</code></pre></div></div>
<h3 id="repeat-examples">REPEAT Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT REPEAT('Drill', 3);
|-----------------|
| EXPR$0 |
|-----------------|
| DrillDrillDrill |
|-----------------|
</code></pre></div></div>
<h2 id="replace">REPLACE</h2>
<p>Replaces all occurrences of the specified substring with another specified substring.</p>
<h3 id="replace-syntax">REPLACE Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>REPLACE(string, from, to)
</code></pre></div></div>
<h3 id="replace-examples">REPLACE Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT REPLACE('The quick brown fox jumps...', 'jumps', 'sleeps')
|-------------------------------|
| EXPR$0 |
|-------------------------------|
| The quick brown fox sleeps... |
|-------------------------------|
</code></pre></div></div>
<h2 id="reverse">REVERSE</h2>
<p>Returns the reverse of the input string.</p>
<h3 id="reverse-syntax">REVERSE Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>REVERSE (string)
</code></pre></div></div>
<h3 id="reverse-example">REVERSE Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT REVERSE('abcdefg');
|---------|
| EXPR$0 |
|---------|
| gfedcba |
|---------|
</code></pre></div></div>
<h2 id="rpad">RPAD</h2>
<p>Pads the string to the length specified. Appends the text you specify after the fill keyword using spaces for the fill if you provide no text or insufficient text to achieve the length. Truncates the string if it is longer than the specified length.</p>
<h3 id="rpad-syntax">RPAD Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RPAD (string, length [, fill text])
</code></pre></div></div>
<h3 id="rpad-example">RPAD Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT RPAD('Apache Drill ', 22, 'Release 1.0') FROM (VALUES(1));
|------------------------|
| EXPR$0 |
|------------------------|
| Apache Drill Release 1 |
|------------------------|
1 row selected (0.107 seconds)
</code></pre></div></div>
<h2 id="rtrim">RTRIM</h2>
<p>Removes any characters from the end of string1 that match the characters in string2.</p>
<h3 id="rtrim-syntax">RTRIM Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RTRIM(string1, string2)
</code></pre></div></div>
<h3 id="rtrim-examples">RTRIM Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT RTRIM('Apache Drill', 'Drill ') FROM (VALUES(1));
|--------|
| EXPR$0 |
|--------|
| Apache |
|--------|
1 row selected (0.135 seconds)
SELECT RTRIM('1.0 Apache Tomcat 1.0', 'Drill 1.0') from (VALUES(1));
|--------------------|
| EXPR$0 |
|--------------------|
| 1.0 Apache Tomcat |
|--------------------|
1 row selected (0.102 seconds)
</code></pre></div></div>
<h2 id="split">SPLIT</h2>
<p>Splits the input string into a list of substrings using the specified delimiter character.</p>
<h3 id="split-syntax">SPLIT Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SPLIT(string, delimiter)
</code></pre></div></div>
<h3 id="split-usage-notes">SPLIT Usage Notes</h3>
<p>The <em>delimiter</em> must not be null and must contain a single character.</p>
<h3 id="split-examples">SPLIT Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT split('The quick brown fox jumps...', ' ');
|------------------------------------|
| EXPR$0 |
|------------------------------------|
| [The, quick, brown, fox, jumps...] |
|------------------------------------|
</code></pre></div></div>
<h2 id="split_part">SPLIT_PART</h2>
<p>Return the string part at <em>start</em> or from <em>start</em> to <em>end</em> after splitting the input string using the specified delimiter.</p>
<h3 id="split_part-syntax">SPLIT_PART Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SPLIT_PART(string, delimiter, start[, end])
</code></pre></div></div>
<h3 id="split_part-usage-notes">SPLIT_PART Usage Notes</h3>
<p>The <em>delimiter</em> string may be multiple characters long. The <em>start</em> must be a positive integer.
The <em>end</em> must be greater than or equal to <em>start</em> if provided.</p>
<h3 id="split_part-examples">SPLIT_PART Examples</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT split_part('The | quick | brown | fox | jumps', ' | ', 4);
|--------|
| EXPR$0 |
|--------|
| fox |
|--------|
SELECT split_part('The | quick | brown | fox | jumps', ' | ', 4, 5);
|--------------|
| EXPR$0 |
|--------------|
| fox | jumps |
|--------------|
SELECT split_part('The | quick | brown | fox | jumps', ' | ', 4, 10);
|--------------|
| EXPR$0 |
|--------------|
| fox | jumps |
|--------------|
</code></pre></div></div>
<h2 id="strpos">STRPOS</h2>
<p>Returns the location of the first occurrence of a substring of the input
string, or 0 if the substring does not occur.</p>
<h3 id="strpos-syntax">STRPOS Syntax</h3>
<p>STRPOS(string, substring)</p>
<h3 id="strpos-example">STRPOS Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT STRPOS('Apache Drill', 'Drill') FROM (VALUES(1));
|--------|
| EXPR$0 |
|--------|
| 8 |
|--------|
1 row selected (0.22 seconds)
</code></pre></div></div>
<h2 id="substr">SUBSTR</h2>
<p>Returns</p>
<ul>
<li>the substring of the input string starting the specified location and optionally having the specified length or</li>
<li>the first substring of the input string matching the specified regular expression.</li>
</ul>
<h3 id="substr-syntax">SUBSTR Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SUBSTR(string, start)
SUBSTR(string, start, length)
SUBSTR(string, regexp)
</code></pre></div></div>
<h3 id="substr-usage-notes">SUBSTR Usage Notes</h3>
<ol>
<li>If <em>start</em> specifies a location outside of <em>string</em> or if <em>length</em> &lt; 1 then the empty string <code class="language-plaintext highlighter-rouge">''</code> is returned.</li>
<li>If <em>length</em> is unspecified or if it specifies a substring that extends beyond the end of <em>string</em> then the returned substring extends to the end of the string.</li>
<li>If <em>regexp</em> does not match a substring of <em>string</em> then NULL is returned.</li>
<li>You can use the alias SUBSTRING for this function.</li>
</ol>
<h3 id="substr-example">SUBSTR Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT SUBSTR('Apache Drill', 8) FROM (VALUES(1));
|--------|
| EXPR$0 |
|--------|
| Drill |
|--------|
1 row selected (0.134 seconds)
SELECT SUBSTR('Apache Drill', 3, 2) FROM (VALUES(1));
|--------|
| EXPR$0 |
|--------|
| ac |
|--------|
1 row selected (0.129 seconds)
SELECT SUBSTR('On 1970-01-01 the quick brown fox jumped...', '[\d-]+')
|------------|
| EXPR$0 |
|------------|
| 1970-01-01 |
|------------|
</code></pre></div></div>
<!-- this function appears to be pointless because, from what I can tell, its VARCHAR input must already be in UTF-8
## TOASCII
Transcodes the input string from the specified input encoding to UTF-8.
### TOASCII Syntax
TOASCII (string, encoding)
### TOASCII Usage Notes
1. In spite of the function's name, the output encoding is not limited to ASCII.
2. The _encoding_ must identify a [`java.nio.charset.CharSet`](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html) installed in the JRE in which Drill is running.
### TOASCII Example
SELECT TOASCII(cast(CONVERT_TO('hello', 'UTF16') as varchar))
-->
<h2 id="trim">TRIM</h2>
<p>Removes any characters from the beginning, end, or both sides of string2 that match the characters in string1.</p>
<h3 id="trim-syntax">TRIM Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TRIM ([leading | trailing | both] [string1] from string2)
</code></pre></div></div>
<h3 id="trim-example">TRIM Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT TRIM(trailing 'l' from 'Drill') FROM (VALUES(1));
|------------|
| EXPR$0 |
|------------|
| Dri |
|------------|
1 row selected (0.172 seconds)
SELECT TRIM(both 'l' from 'long live Drill') FROM (VALUES(1));
|---------------|
| EXPR$0 |
|---------------|
| ong live Dri |
|---------------|
1 row selected (0.104 seconds)
SELECT TRIM(leading 'l' from 'long live Drill') FROM (VALUES(1));
|-----------------|
| EXPR$0 |
|-----------------|
| ong live Drill |
|-----------------|
1 row selected (0.101 seconds)
</code></pre></div></div>
<h2 id="upper">UPPER</h2>
<p>Converts the characters in the input string to uppercase.</p>
<h3 id="upper-syntax">UPPER Syntax</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>UPPER (string)
</code></pre></div></div>
<h3 id="upper-example">UPPER Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT UPPER('Apache Drill') FROM (VALUES(1));
|--------------|
| EXPR$0 |
|--------------|
| APACHE DRILL |
|--------------|
1 row selected (0.081 seconds)
</code></pre></div></div>
<div class="doc-nav">
<span class="previous-toc"><a href="/docs/date-time-functions-and-arithmetic/">← Date/Time Functions and Arithmetic</a></span><span class="next-toc"><a href="/docs/aggregate-and-aggregate-statistical/">Aggregate and Aggregate Statistical →</a></span>
</div>
</div>
</div>
</div>
</div>
<p class="push"></p>
<div id="footer" class="mw">
<div class="wrapper">
Copyright © 2012-2020 The Apache Software Foundation, licensed under the Apache License, Version 2.0.<br>
Apache and the Apache feather logo are trademarks of The Apache Software Foundation. Other names appearing on the site may be trademarks of their respective owners.<br/><br/>
</div>
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-53379651-1', 'auto');
ga('send', 'pageview');
</script>
<script type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-548b2caa33765e8d" async="async"></script>
</body>
</html>