---
schema_version: "1"
id: 2d1ac077fe25c76660df7af456f0b479ac6b55acc3947b81d5e3964038c8d41d
title: String Functions
collection: tableau
version: next
locale: en-gb
portal_url: https://docs.salesforce.com/tableau/next/en-gb/public/desktop/functions_functions_string.md
canonical_url: https://help.tableau.com/v0.0/public/desktop/en-gb/functions_functions_string.htm
source_site: help.tableau.com
content_type: documentation
content_hash: f22bf1ab8ece984d2492d54d6871e3e36cb98ec84b6848afac276129f6463e0d
description: Reference for Tableau string functions used to manipulate text data.
---
[Skip to main content](#main-content)

# String Functions

This article introduces string functions and their uses in Tableau. It also demonstrates how to create a string calculation using an example.

## Why use string functions

String functions allow you to manipulate string data (i.e. data made of text). Tableau uses the current International Components for Unicode (ICU) library when comparing strings. The way strings are sorted and compared is based both on language and locale, and it’s possible for vizzes to change as the ICU is continuously updated for better language support.

For example, you might have a field that contains all of your customers' first and last names. One member might be: Jane Johnson. You can pull the last names from all your customers into a new field using a string function.

The calculation might look something like this:

`SPLIT([Customer Name], ' ', 2)`

Therefore, `SPLIT('Jane Johnson' , ' ', 2) =` 'Johnson'.

## Gain familiarity with other text concepts

There are several other topics that might be of interest but aren’t part of string functions:

- [Format at the Workbook Level](https://help.tableau.com//current/pro/desktop/en-gb/formatting_workbook.htm)
- [Use Custom Fonts](https://help.tableau.com//current/pro/desktop/en-gb/formatting_create_custom_fonts.htm)
- [Format Fields and Field Labels](https://help.tableau.com//current/pro/desktop/en-gb/formatting_specific_fields.htm)

> [!TIP]
> 
>  See [Format Text](https://help.tableau.com/v0.0/public/desktop/en-gb/formatting_fonts_beta.htm) and related topics for working with text fields. The string functions on this page allow you to manipulate content in fields, not set their display formatting.

## String functions available in Tableau

### ASCII

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>ASCII(string)</code></td></tr><tr><td>Output</td><td>Number</td></tr><tr><td>Definition</td><td>Returns the ASCII code for the first character of a <code>&lt;string&gt;</code>.</td></tr><tr><td>Example</td><td><pre>ASCII('A') = 65</pre></td></tr><tr><td>Notes</td><td>This is the inverse of the <code>CHAR</code> function.</td></tr></tbody></table>

### CHAR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>CHAR(number)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns the character encoded by the ASCII code <code>&lt;number&gt;</code>.</td></tr><tr><td>Example</td><td><pre>CHAR(65) = 'A'</pre></td></tr><tr><td>Notes</td><td>This is the inverse of the <code>ASCII</code> function.</td></tr></tbody></table>

### CONTAINS

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>CONTAINS(string, substring)</code></td></tr><tr><td>Output</td><td>Boolean</td></tr><tr><td>Definition</td><td>Returns true if the given string contains the specified substring.</td></tr><tr><td>Example</td><td><pre>CONTAINS("Calculation", "alcu") = true</pre></td></tr><tr><td>Notes</td><td><p>See also the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_logical.htm" target="_blank">logical function</a> <code>IN</code> as well as supported RegEx in the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_additional.htm" target="_blank">additional functions documentation</a>.</p><p>Depending on the data source, CONTAINS may be case sensitive. That is, for some data sources, <code>CONTAINS("Calculation", "ALCU") = false</code> but <code>CONTAINS("Calculation", "alcu") = true</code>. See also <a href="#UPPER" class="xref">UPPER</a>, <a href="#LOWER" class="xref">LOWER</a>, and <a href="#PROPER" class="xref">PROPER</a>.</p></td></tr></tbody></table>

### ENDSWITH

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>ENDSWITH(string, substring)</code></td></tr><tr><td>Output</td><td>Boolean</td></tr><tr><td>Definition</td><td>Returns true if the given string ends with the specified substring. Trailing white spaces are ignored.</td></tr><tr><td>Example</td><td><pre>ENDSWITH("Tableau", "leau") = true</pre></td></tr><tr><td>Notes</td><td>See also the supported RegEx in the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_additional.htm" target="_blank">additional functions documentation</a>.</td></tr></tbody></table>

### FIND

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>FIND(string, substring, [start])</code></td></tr><tr><td>Output</td><td>Number</td></tr><tr><td>Definition</td><td><p>Returns the index position of substring in string, or 0 if the substring isn't found. The first character in the string is position 1.</p><p>If the optional numeric argument <code>start</code> is added, the function ignores any instances of the substring that appear before the starting position.</p></td></tr><tr><td>Example</td><td><pre>FIND("Calculation", "alcu") = 2</pre><pre>FIND("Calculation", "Computer") = 0</pre><pre xml:space="preserve">FIND("Calculation", "a", 3) = 7</pre><pre xml:space="preserve">FIND("Calculation", "a", 2) = 2</pre><pre xml:space="preserve">FIND("Calculation", "a", 8) = 0</pre></td></tr><tr><td>Notes</td><td>See also the supported RegEx in the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_additional.htm" target="_blank">additional functions documentation</a>.</td></tr></tbody></table>

### FINDNTH

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>FINDNTH(string, substring, occurrence)</code></td></tr><tr><td>Output</td><td>Number</td></tr><tr><td>Definition</td><td>Returns the position of the nth occurrence of substring within the specified string, where n is defined by the occurrence argument.</td></tr><tr><td>Example</td><td><pre>FINDNTH("Calculation", "a", 2) = 7</pre></td></tr><tr><td>Notes</td><td><p><code>FINDNTH</code> is not available for all data sources.</p><p>See also the supported RegEx in the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_additional.htm" target="_blank">additional functions documentation</a>.</p></td></tr></tbody></table>

### LEFT

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>	LEFT(string, number)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns the left-most <code>&lt;number&gt;</code> of characters in the string.</td></tr><tr><td>Example</td><td><pre>LEFT("Matador", 4) = "Mata"</pre></td></tr><tr><td>Notes</td><td>See also <a href="#MID" class="xref">MID</a> and <a href="#RIGHT" class="xref">RIGHT</a>.</td></tr></tbody></table>

### LEN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>LEN(string)</code></td></tr><tr><td>Output</td><td>Number</td></tr><tr><td>Definition</td><td>Returns the length of the string.</td></tr><tr><td>Example</td><td><pre>LEN("Matador") = 7</pre></td></tr><tr><td>Notes</td><td>Not to be confused with the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_spatial.htm" target="_blank">spatial function</a> <code>LENGTH</code>.</td></tr></tbody></table>

### LOWER

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>LOWER(string)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns the provided <code>&lt;string&gt;</code> in all lowercase characters.</td></tr><tr><td>Example</td><td><pre>LOWER("ProductVersion") = "productversion"</pre></td></tr><tr><td>Notes</td><td>See also <a href="#UPPER" class="xref">UPPER</a> and <a href="#PROPER" class="xref">PROPER</a>.</td></tr></tbody></table>

### LTRIM

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>	LTRIM(string)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns the provided <code>&lt;string&gt;</code> with any leading spaces removed.</td></tr><tr><td>Example</td><td><pre>LTRIM(" Matador ") = "Matador "</pre></td></tr><tr><td>Notes</td><td>See also <a href="#RTRIM" class="xref">RTRIM</a>.</td></tr></tbody></table>

### MAX

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>MAX(expression)</code> or <code>MAX(expr1, expr2)</code></td></tr><tr><td>Output</td><td>Same data type as the argument, or <code>NULL&nbsp;</code>if any part of the argument is null.</td></tr><tr><td>Definition</td><td><p>Returns the maximum of the two arguments, which must be of the same data type.</p><p><code>MAX</code> can also be applied to a single field as an aggregation.</p></td></tr><tr><td>Example</td><td><pre xml:space="preserve">MAX(4,7) = 7<br>MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021# <br>MAX([Name]) = "Zander"</pre></td></tr><tr><td>Notes</td><td><p><b>For strings</b></p><p><code>MAX</code> is usually the value that comes last in alphabetical order.</p><p class="note">For database data sources, the <code>MAX</code> string value is highest in the sort sequence defined by the database for that column.</p><p><b>For dates</b></p><p>For dates, the <code>MAX</code> is the most recent date. If <code>MAX</code> is an aggregation, the result will not have a date hierarchy. If <code>MAX</code> is a comparison, the result will retain the date hierarchy.</p><p><b>As an aggregation</b></p><p><code>MAX(expression)</code> is an aggregate function and returns a single aggregated result. This displays as <code>AGG(expression)</code> in the viz.</p><p><b>As a comparison</b></p><p><code>MAX(expr1, expr2)</code> compares the two values and returns a row-level value.</p><p>See also <code><a href="#MIN" class="xref">MIN</a></code>.</p></td></tr></tbody></table>

### MID

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>(MID(string, start, [length])</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td><p>Returns a string starting at the specified <code>start</code> position. The first character in the string is position 1.</p><p>If the optional numeric argument <code>length</code> is added, the returned string includes only that number of characters.</p></td></tr><tr><td>Example</td><td><pre>MID("Calculation", 2) = "alculation"</pre><pre>MID("Calculation", 2, 5) ="alcul"</pre></td></tr><tr><td>Notes</td><td>See also the supported RegEx in the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_additional.htm" target="_blank">additional functions documentation</a>.</td></tr></tbody></table>

### MIN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>MIN(expression)</code> or <code>MIN(expr1, expr2)</code></td></tr><tr><td>Output</td><td>Same data type as the argument, or <code>NULL&nbsp;</code>if any part of the argument is null.</td></tr><tr><td>Definition</td><td><p>Returns the minimum of the two arguments, which must be of the same data type.</p><p><code>MIN </code>can also be applied to a single field as an aggregation.</p></td></tr><tr><td>Example</td><td><pre xml:space="preserve">MIN(4,7) = 4<br>MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#<br>MIN([Name]) = "Abebi"</pre></td></tr><tr><td>Notes</td><td><p><b>For strings</b></p><p><code>MIN</code> is usually the value that comes first in alphabetical order.</p><p class="note">For database data sources, the <code>MIN</code> string value is lowest in the sort sequence defined by the database for that column.</p><p><b>For dates</b></p><p>For dates, the <code>MIN</code> is the earliest date. If <code>MIN</code> is an aggregation, the result will not have a date hierarchy. If <code>MIN</code> is a comparison, the result will retain the date hierarchy.</p><p><b>As an aggregation</b></p><p><code>MIN(expression)</code> is an aggregate function and returns a single aggregated result. This displays as <code>AGG(expression)</code> in the viz.</p><p><b>As a comparison</b></p><p><code>MIN(expr1, expr2)</code> compares the two values and returns a row-level value.</p><p>See also <code><a href="#MAX" class="xref">MAX</a></code>.</p></td></tr></tbody></table>

### PROPER

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>PROPER(string)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td><p>Returns the provided <code>&lt;string&gt;</code> with the first letter of each word capitalised and the remaining letters in lowercase.</p></td></tr><tr><td>Example</td><td><pre>PROPER("PRODUCT name") = "Product Name"</pre><pre>PROPER("darcy-mae") = "Darcy-Mae"</pre></td></tr><tr><td>Notes</td><td><p>Spaces and non-alphanumeric characters such as punctuation are treated as separators.</p><p>See also <a href="#LOWER" class="xref">LOWER</a> and <a href="#UPPER" class="xref">UPPER</a>.</p></td></tr> <tr><td>Database limitations</td><td>PROPER is only available for some flat files and in extracts. If you need to use PROPER in a data source that doesn't otherwise support it, consider using an extract.</td></tr></tbody></table>

### REPLACE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>REPLACE(string, substring, replacement</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Searches <code>&lt;string&gt;</code> for <code>&lt;substring&gt;</code> and replaces it with <code>&lt;replacement&gt;</code>. If <code>&lt;substring&gt;</code> is not found, the string is not changed.</td></tr><tr><td>Example</td><td><pre xml:space="preserve">REPLACE("Version 3.8", "3.8", "4x") = "Version 4x"</pre></td></tr><tr><td>Notes</td><td>See also <code>REGEXP_REPLACE</code> in the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_additional.htm" target="_blank">additional functions documentation</a>.</td></tr></tbody></table>

### RIGHT

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>RIGHT(string, number)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns the right-most <code>&lt;number&gt;</code> of characters in the string.</td></tr><tr><td>Example</td><td><pre>RIGHT("Calculation", 4) = "tion"</pre></td></tr><tr><td>Notes</td><td>See also <a href="#LEFT" class="xref">LEFT</a> and <a href="#MID" class="xref">MID</a>.</td></tr></tbody></table>

### RTRIM

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>RTRIM(string)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns the provided <code>&lt;string&gt;</code> with any trailing spaces removed.</td></tr><tr><td>Example</td><td><pre>RTRIM(" Calculation ") = " Calculation"</pre></td></tr><tr><td>Notes</td><td>See also <a href="#LTRIM" class="xref">LTRIM</a> and <a href="#TRIM" class="xref">TRIM</a>.</td></tr></tbody></table>

### SPACE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>SPACE(number)</code></td></tr><tr><td>Output</td><td>String (specifically, just spaces)</td></tr><tr><td>Definition</td><td>Returns a string that is composed of the specified number of repeated spaces.</td></tr><tr><td>Example</td><td><pre>SPACE(2) = "  "</pre></td></tr></tbody></table>

### SPLIT

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>SPLIT(string, delimiter, token number)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns a substring from a string, using a delimiter character to divide the string into a sequence of tokens.</td></tr><tr><td>Example</td><td><pre>SPLIT ("a-b-c-d", "-", 2) = "b"</pre><pre>SPLIT ("a|b|c|d", "|", -2) = "c"</pre></td></tr><tr><td>Notes</td><td><p>The string is interpreted as an alternating sequence of delimiters and tokens. So for the string <code>abc-defgh-i-jkl</code>, where the delimiter character is '<code>-</code>', the tokens are (1) <code>abc</code>, (2) <code>defgh</code>, (3) <code>i</code> and (4) <code>jlk</code>.</p><p><code>SPLIT</code> returns the token corresponding to the token number. When the token number is positive, tokens are counted starting from the left end of the string; when the token number is negative, tokens are counted starting from the right.</p><p>See also supported RegEX in the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_additional.htm" target="_blank">additional functions documentation</a>.</p></td></tr><tr><td>Database limitations</td><td><p>The split and custom split commands are available for the following data sources types: Tableau data extracts, Microsoft Excel, Text File, PDF File, Salesforce, OData, Microsoft Azure Market Place, Google Analytics, Vertica, Oracle, MySQL, PostgreSQL, Teradata, Amazon Redshift, Aster Data, Google Big Query, Cloudera Hadoop Hive, Hortonworks Hive and Microsoft SQL Server.</p><p>Some data sources impose limits on splitting strings. See SPLIT&nbsp;function limitations later in this topic.</p></td></tr></tbody></table>

### STARTSWITH

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>STARTSWITH(string, substring)</code></td></tr><tr><td>Output</td><td>Boolean</td></tr><tr><td>Definition</td><td>Returns true if <code>string</code> starts with <code>substring</code>. Leading white spaces are ignored.</td></tr><tr><td>Example</td><td><pre xml:space="preserve">STARTSWITH("Matador, "Ma") = TRUE</pre></td></tr><tr><td>Notes</td><td>See also <a href="#CONTAINS" class="xref">CONTAINS</a>, as well as supported RegEX in the <a href="https://help.tableau.com/current/pro/desktop/en-gb/functions_functions_additional.htm" target="_blank">additional functions documentation</a>.</td></tr></tbody></table>

### TRIM

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>TRIM(string)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns the provided <code>&lt;string&gt;</code> with leading and trailing spaces removed.</td></tr><tr><td>Example</td><td><pre>TRIM(" Calculation ") = "Calculation"</pre></td></tr><tr><td>Notes</td><td>See also <a href="#LTRIM" class="xref">LTRIM</a> and <a href="#RTRIM" class="xref">RTRIM</a>.</td></tr></tbody></table>

### UPPER

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>Syntax</td><td><code>UPPER(string)</code></td></tr><tr><td>Output</td><td>String</td></tr><tr><td>Definition</td><td>Returns the provided <code>&lt;string&gt;</code> in all uppercase characters.</td></tr><tr><td>Example</td><td><pre>UPPER("Calculation") = "CALCULATION"</pre></td></tr><tr><td>Notes</td><td>See also <a href="#PROPER" class="xref">PROPER</a> and <a href="#LOWER" class="xref">LOWER</a>.</td></tr></tbody></table>  

## Create a string calculation

Follow along with the steps below to learn how to create a string calculation.

1. In Tableau Desktop, connect to the **Sample - Superstore** saved data source, which comes with Tableau.
2. Navigate to a worksheet.
3. From the **Data** pane, under Dimensions, drag Order ID to the Rows shelf.
    
    ![A spreadsheet containing a list of order IDs in one column.](/tableau/next/en-gb/public/desktop/en-gb/Img/stringfunctions1.png)
    
    Notice that every order ID contains values for country (CA and US, for example), year (2011) and order number (100006). For this example, you will create a calculation to pull only the order number from the field.
4. Select Analysis \> Create Calculated Field.
5. In the calculation editor that opens, do the following:

- Name the calculated field **Order ID Numbers**.
- Enter the following formula:
    
    `RIGHT([Order ID], 6)`
    
    This formula takes the specified digits (6) from the right of the string and pulls them into a new field.
    
    Therefore, `RIGHT('CA-2011-100006' , 6)` = '100006'.
- When finished, click **OK**.
    
    The new calculated field appears under **Dimensions** in the **Data** pane. Just like your other fields, you can use it in one or more visualisations.

7. From the **Data** pane, drag Order ID Numbers to the Rows shelf. Place it to the right of Order ID.
    
    Notice how the fields differ now.
    
    ![A spreadsheet containing a list of order IDs in one column.](/tableau/next/en-gb/public/desktop/en-gb/Img/stringfunctions2.png)

## SPLIT limitations by data source

Some data sources impose limits on splitting string. The following table shows which data sources support negative token numbers (splitting from the right) and whether there is a limit on the number of splits allow per data source.

A `SPLIT` function that specifies a negative token number and would be legal with other data sources will return the error with these data sources: _"Splitting from right is not supported by the data source."_

<table class="table--plain"><colgroup></colgroup><tbody><tr><td><b>Data Source</b></td><td><b>Left/Right Constraints</b></td><td><b>Maximum Number of Splits</b></td><td><b>Version limitations</b></td></tr><tr><td style="font-weight: bold;">Tableau Data Extract</td><td>Both</td><td>Infinite</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Microsoft Excel</td><td>Both</td><td>Infinite</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Text file</td><td>Both</td><td>Infinite</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Salesforce</td><td>Both</td><td>Infinite</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">OData</td><td>Both</td><td>Infinite</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Google Analytics</td><td>Both</td><td>Infinite</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Tableau Data Server</td><td>Both</td><td>Infinite</td><td>Supported in version 9.0.</td></tr><tr><td style="font-weight: bold;">Vertica</td><td>Left only</td><td>10</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Oracle</td><td>Left only</td><td>10</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">MySQL</td><td>Both</td><td>10</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">PostgreSQL</td><td>Left only prior to version 9.0; both for version 9.0 and above</td><td>10</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Teradata</td><td>Left only</td><td>10</td><td>Version 14 and later</td></tr><tr><td style="font-weight: bold;">Amazon Redshift</td><td>Left only</td><td>10</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Aster Database</td><td>Left only</td><td>10</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Google BigQuery</td><td>Left only</td><td>10</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Hortonworks Hadoop Hive</td><td>Left only</td><td>10</td><td>&nbsp;</td></tr><tr><td style="font-weight: bold;">Cloudera Hadoop</td><td>Left only</td><td>10</td><td>Impala supported starting in version 2.3.0.</td></tr><tr><td style="font-weight: bold;">Microsoft SQL Server</td><td>Both</td><td>10</td><td>2008 and later</td></tr></tbody></table>

## See Also

[Functions in Tableau](https://help.tableau.com/v0.0/public/desktop/en-gb/functions.htm)

[Tableau Functions (Alphabetical)](https://help.tableau.com/v0.0/public/desktop/en-gb/functions_all_alphabetical.htm)

[Tableau Functions (by Category)](https://help.tableau.com/v0.0/public/desktop/en-gb/functions_all_categories.htm)

[Writing Calculations in Tableau](https://help.tableau.com/v0.0/public/desktop/en-gb/functions_operators.htm)