Todos los productos
Search
Centro de documentos

MaxCompute:Descripción general de las funciones de cadena

Última actualización: Sep 18, 2026

MaxCompute proporciona funciones de cadena para truncar, concatenar, convertir, comparar y buscar datos de tipo string en las tablas.

MaxCompute SQL admite a continuación las siguientes funciones de cadena.

Función

Descripción

ASCII

Devuelve el código ASCII del primer carácter de una cadena.

CHAR_MATCHCOUNT

Calcula cuántos caracteres de la cadena A aparecen en la cadena B.

CHR

Convierte un código ASCII en un carácter.

CONCAT

Concatena cadenas.

CONCAT_WS

Concatena todas las cadenas de entrada mediante un delimitador específico.

DECODE

Decodifica una cadena con un formato de codificación específico.

ENCODE

Codifica una cadena con un formato de codificación específico.

FIND_IN_SET

Busca la posición de una cadena específica dentro de una cadena separada por comas.

FORMAT_NUMBER

Convierte un número en una cadena con un formato específico.

FROM_CHARSET

Convierte datos binarios con un formato de codificación específico en una cadena UTF-8.

FROM_JSON

Devuelve datos de tipo ARRAY, MAP o STRUCT a partir de una cadena JSON y un formato de salida determinados.

GET_JSON_OBJECT

Extrae una cadena específica de una cadena JSON estándar mediante un método determinado.

INITCAP

Convierte una cadena a formato de título. Cada palabra inicia con mayúscula, continúa con minúsculas y se separa por espacios.

INSTR

Busca la posición de la cadena A dentro de la cadena B.

IS_ENCODING

Determina si una cadena se puede convertir del conjunto de caracteres A al conjunto de caracteres B.

JSON_TUPLE

Extrae de una cadena JSON estándar las cadenas que corresponden a un conjunto de claves de entrada.

KEYVALUE

Divide una cadena en pares clave-valor, separa los pares y devuelve el valor que corresponde a una clave específica.

KEYVALUE_TUPLE

Divide una cadena en varios pares clave-valor, separa los pares y devuelve los valores que corresponden a varias claves específicas.

LENGTH

Calcula la longitud de una cadena.

LENGTHB

Calcula la longitud en bytes de una cadena.

LOCATE

Busca la posición de una subcadena específica dentro de una cadena.

LPAD

Rellena una cadena por la izquierda hasta alcanzar una longitud determinada.

LTRIM

Elimina caracteres del extremo izquierdo de una cadena.

MASK_HASH

Devuelve un valor hash calculado a partir de una expresión de cadena.

MD5

Calcula el hash MD5 de una cadena.

PARSE_URL

Analiza una URL y devuelve información sobre una parte específica.

PARSE_URL_TUPLE

Analiza una URL y devuelve información sobre varias partes.

REGEXP_COUNT

Cuenta las subcadenas que coinciden con un patrón específico a partir de una posición determinada.

REGEXP_EXTRACT

Divide una cadena en grupos según un patrón específico y devuelve la cadena del grupo indicado.

REGEXP_EXTRACT_ALL

Busca en una cadena todas las subcadenas que coinciden con un patrón de expresión regular y las devuelve como un arreglo.

REGEXP_INSTR

Devuelve la posición inicial o final de una subcadena que coincide con un patrón específico. La búsqueda comienza en una posición determinada y considera una ocurrencia concreta.

REGEXP_REPLACE

Reemplaza por otra cadena las subcadenas que coinciden con un patrón específico en una ocurrencia determinada.

REGEXP_SUBSTR

Devuelve una subcadena que coincide con un patrón específico. La búsqueda comienza en una posición determinada y considera una ocurrencia concreta.

REPEAT

Devuelve una cadena repetida un número específico de veces.

REPLACE

Reemplaza por otra cadena las subcadenas que coinciden con una cadena específica.

REVERSE

Devuelve una cadena invertida.

RPAD

Rellena una cadena por la derecha hasta alcanzar una longitud determinada.

RTRIM

Elimina caracteres del extremo derecho de una cadena.

SOUNDEX

Convierte una cadena estándar en una cadena SOUNDEX.

SPACE

Genera una cadena de espacios.

SPLIT

Divide una cadena mediante un delimitador y devuelve un arreglo.

SPLIT_PART

Divide una cadena mediante un delimitador y devuelve una parte específica.

SUBSTR

Devuelve una subcadena de tipo STRING a partir de una posición y con una longitud determinadas.

SUBSTRING

Devuelve una subcadena de tipo STRING o BINARY a partir de una posición y con una longitud determinadas.

SUBSTRING_INDEX

Extrae una subcadena antes o después de una ocurrencia específica de un delimitador.

TO_CHAR

Convierte un valor BOOLEAN, BIGINT, DECIMAL o DOUBLE en su representación STRING.

TO_JSON

Convierte un tipo complejo específico en una cadena JSON.

TOLOWER

Convierte en minúsculas las letras mayúsculas del inglés dentro de una cadena.

TOUPPER

Convierte en mayúsculas las letras minúsculas del inglés dentro de una cadena.

TRANSLATE

Reemplaza todas las ocurrencias de la cadena A en la cadena B por la cadena C.

TRIM

Elimina caracteres de ambos extremos de una cadena.

URL_DECODE

Convierte una cadena del formato application/x-www-form-urlencoded MIME a caracteres estándar.

URL_ENCODE

Codifica una cadena en formato application/x-www-form-urlencoded MIME.

Notas de uso

MaxCompute V2.0 incluye funciones adicionales. Si las funciones que utiliza involucran tipos de datos nuevos compatibles con la edición de tipos de datos de MaxCompute V2.0, debe ejecutar la instrucción SET para habilitar dicha edición. Entre los tipos de datos nuevos se encuentran TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP y BINARY.

  • Nivel de sesión: para usar la edición de tipos de datos de MaxCompute V2.0, agregue set odps.sql.type.system.odps2=true; antes de la instrucción SQL que desea ejecutar. Envíe y ejecute ambas instrucciones de forma conjunta.

  • Nivel de proyecto: el propietario del proyecto puede habilitar la edición de tipos de datos de MaxCompute V2.0 según los requisitos del proyecto. La configuración surte efecto entre 10 y 15 minutos después. Para habilitar esta edición a nivel de proyecto, ejecute el siguiente comando:

    setproject odps.sql.type.system.odps2=true; 

    Para obtener más información sobre setproject, consulte Project operations. Para conocer las precauciones necesarias al habilitar la edición de tipos de datos de MaxCompute V2.0 a nivel de proyecto, consulte Data type version guide.

Límites

Las siguientes funciones solo admiten caracteres del inglés:

  • TRIM/RTRIM/LTRIM: el parámetro trimChars solo admite caracteres del inglés.

  • REVERSE: en modo Hive, solo admite caracteres del inglés.

  • SOUNDEX: solo convierte caracteres del inglés.

  • TOLOWER: convierte en minúsculas las letras mayúsculas del inglés dentro de una cadena.

  • TOUPPER: convierte en mayúsculas las letras minúsculas del inglés dentro de una cadena.

  • INITCAP: convierte en mayúscula la primera letra inglesa de cada palabra y en minúsculas el resto.

ASCII

  • Sintaxis

    bigint ascii(string <str>)
  • Descripción

    Devuelve el código ASCII del primer carácter de la cadena str.

  • Parámetros

    str: obligatorio. Tipo STRING. Si la entrada es de tipo BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente al tipo STRING antes del cálculo.

  • Valor devuelto

    Devuelve un valor de tipo BIGINT. El valor devuelto sigue estas reglas:

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, se devuelve un error.

    • Si str es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: devolver el código ASCII del primer carácter de la cadena abcde. Instrucción de ejemplo:

      -- Returns 97.
      select ascii('abcde'); 
    • Ejemplo 2: el parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select ascii(null);

CHAR_MATCHCOUNT

  • Sintaxis

    bigint char_matchcount(string <str1>, string <str2>)
  • Descripción

    Calcula cuántos caracteres de str1 aparecen en str2.

  • Parámetros

    str1 y str2: obligatorios. Tipo STRING. Ambas cadenas deben ser cadenas UTF-8 válidas. Si durante la comparación se detectan caracteres no válidos (sin codificación Unicode), se devuelve un valor negativo.

  • Valor devuelto

    Devuelve un valor de tipo BIGINT. Si str1 o str2 es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: calcular cuántos caracteres de la cadena aabc aparecen en abcde. Instrucción de ejemplo:

      -- Returns 4.
      select char_matchcount('aabc','abcde');
    • Ejemplo 2: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select char_matchcount(null,'abcde');

CHR

  • Sintaxis

    string chr(bigint <ascii>)
  • Descripción

    Convierte un código ASCII específico en un carácter.

  • Parámetros

    ascii: obligatorio. Valor ASCII de tipo BIGINT. Valores válidos: de 0 a 127. Si la entrada es de tipo STRING, DOUBLE o DECIMAL, se convierte implícitamente al tipo BIGINT antes del cálculo.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto sigue estas reglas:

    • Si el valor de ascii está fuera del rango válido, se devuelve un error.

    • Si ascii no es de tipo BIGINT, STRING, DOUBLE o DECIMAL, se devuelve un error.

    • Si ascii es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: convertir el código ASCII 100 en un carácter. Instrucción de ejemplo:

      -- Returns d.
      select chr(100);
    • Ejemplo 2: el parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select chr(null);
    • Ejemplo 3: la entrada es un carácter de tipo STRING. Instrucción de ejemplo:

      --The input is implicitly converted to the BIGINT type for the operation, which returns 'd'.
      select chr('100');

CONCAT

  • Sintaxis

    array<T> concat(array<T> <a>, array<T> <b>[,...])
    string concat(string <str1>, string <str2>[,...])
  • Descripción

    • Arreglos como entrada: concatena todos los elementos de varios arreglos y devuelve un arreglo nuevo.

    • Cadenas como entrada: concatena varias cadenas y devuelve una cadena nueva.

  • Parámetros

    • a y b: obligatorios. Estos parámetros especifican arreglos. T en array<T> indica el tipo de datos de los elementos de los arreglos. Los elementos pueden ser de cualquier tipo de datos. Los elementos del arreglo a y los del arreglo b deben tener el mismo tipo de datos. Los elementos nulos también participan en la operación.

    • str1 y str2: obligatorios. Valores de tipo STRING. Si los valores de entrada son de tipo BIGINT, DOUBLE, DECIMAL o DATETIME, se convierten implícitamente al tipo STRING antes del cálculo. Si los valores de entrada pertenecen a otros tipos de datos, se devuelve un error.

  • Valor devuelto

    • Se devuelve un valor de tipo ARRAY. Si uno de los arreglos de entrada es null, se devuelve null.

    • Se devuelve un valor de tipo STRING. Si no se configuran parámetros de entrada o si alguno se establece en null, se devuelve null.

  • Ejemplos

    • Ejemplo 1: concatenar todos los elementos de array(10, 20) y array(20, -20). Instrucción de ejemplo:

      -- The return value is [10, 20, 20, -20]. 
      select concat(array(10, 20), array(20, -20));
    • Ejemplo 2: uno de los arreglos de entrada contiene un elemento null. Instrucción de ejemplo:

      -- The return value is [10, null, 20, -20]. 
      select concat(array(10, null), array(20, -20));
    • Ejemplo 3: uno de los arreglos de entrada es null. Instrucción de ejemplo:

      -- The return value is null. 
      select concat(array(10, 20), null);
    • Ejemplo 4: concatenar las cadenas aabc y abcde. Instrucción de ejemplo:

      -- The return value is aabcabcde. 
      select concat('aabc','abcde');
    • Ejemplo 5: la entrada está vacía. Instrucción de ejemplo:

      -- The return value is null. 
      select concat();
    • Ejemplo 6: una de las cadenas de entrada es null. Instrucción de ejemplo:

      -- The return value is null. 
      select concat('aabc', 'abcde', null);

CONCAT_WS

  • Sintaxis

    string concat_ws(string <separator>, string <str1>, string <str2>[,...])
    string concat_ws(string <separator>, array<string> <a>)
  • Descripción

    Devuelve una cadena formada por la concatenación de todas las cadenas de entrada o de los elementos de un arreglo mediante el delimitador especificado. Esta función es una extensión de MaxCompute V2.0.

  • Parámetros

    • separator: obligatorio. Delimitador de tipo STRING.

    • str1 y str2: se deben especificar como mínimo dos cadenas. Tipo STRING. Si la entrada es de tipo BIGINT, DECIMAL, DOUBLE o DATETIME, se convierte implícitamente al tipo STRING antes del cálculo.

    • a: obligatorio. Tipo ARRAY. Los elementos del arreglo deben ser de tipo STRING.

  • Valor devuelto

    Devuelve un valor de tipo STRING o STRUCT. El valor devuelto sigue estas reglas:

    • Si str1 o str2 no es de tipo STRING, BIGINT, DECIMAL, DOUBLE o DATETIME, se devuelve un error.

    • Si no se proporcionan parámetros de entrada o si alguno es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: concatenar las cadenas name y hanmeimei mediante :. Instrucción de ejemplo:

      -- Returns name:hanmeimei.
      select concat_ws(':','name','hanmeimei');

      -

    • Ejemplo 2: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select concat_ws(':','avg',null,'34');
    • Ejemplo 3: concatenar los elementos del arreglo array('name', 'hanmeimei') mediante :. Instrucción de ejemplo:

      -- Returns name:hanmeimei.
      select concat_ws(':',array('name', 'hanmeimei'));

DECODE

  • Sintaxis

    STRING DECODE(BINARY <str>, STRING <charset>)
  • Descripción

    Decodifica str con el formato que especifica charset.

  • Parámetros

    Parámetro

    Obligatorio

    Descripción

    str

    Sí

    Tipo BINARY. Cadena que se va a decodificar.

    charset

    Sí

    Tipo STRING. Formato de codificación. Valores válidos: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.

    Nota

    Los formatos de codificación ISO-8859-1 y US-ASCII solo admiten caracteres del inglés, no caracteres chinos.

  • Valor devuelto

    Devuelve un valor STRING. Si str o charset es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: codificar y decodificar la cadena English Sample con el formato UTF-8. Instrucción de ejemplo:

      -- Encode and decode the string.SELECT DECODE(ENCODE("English Sample","UTF-8"), "UTF-8");

      Resultado:

      +-----+| _c0 |+-----+| English Sample |+-----+
    • Ejemplo 2: establecer cualquiera de los parámetros de entrada en NULL. Instrucción de ejemplo:

      SELECT DECODE(ENCODE("English Sample","UTF-8"), NULL);

      Resultado:

      +-----+| _c0 |+-----+| NULL |+-----+

ENCODE

  • Sintaxis

    binary encode(string <str>, string <charset>)
  • Descripción

    Codifica str con el formato que especifica charset.

  • Parámetros

    • str: obligatorio. Tipo STRING. Cadena que se va a recodificar.

    • charset: obligatorio. Tipo STRING. Formato de codificación. Valores válidos: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.

  • Valor devuelto

    Devuelve un valor de tipo BINARY. Si str o charset es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: codificar la cadena abc en formato UTF-8. Instrucción de ejemplo:

      -- Returns abc.
      select encode("abc", "UTF-8");
    • Ejemplo 2: codificar la cadena abc en formato UTF-16BE. Instrucción de ejemplo:

      -- Returns =00a=00b=00c.
      select encode("abc", "UTF-16BE");
    • Ejemplo 3: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select encode("abc", null);

FIND_IN_SET

  • Sintaxis

    BIGINT FIND_IN_SET(STRING <str1>, STRING <str2>[, STRING <delimiter>])
  • Descripción

    Busca la posición de la cadena str1 dentro de la cadena str2, separada por delimiter. La cuenta comienza en 1.

  • Parámetros

    Parámetro

    Obligatorio

    Descripción

    str1

    Sí

    Tipo STRING. Cadena que se va a buscar.

    str2

    Sí

    Tipo STRING. Cadena separada por delimiter.

    delimiter

    No

    Constante STRING. El valor predeterminado es la coma (,). El delimitador puede ser un solo carácter o una cadena.

  • Valor devuelto

    Devuelve un valor de tipo BIGINT. El valor devuelto sigue estas reglas:

    • Si str2 no contiene str1 o si str1 contiene delimiter, se devuelve 0.

    • Si str1 o str2 es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: buscar la posición de la cadena ab dentro de la cadena abc,hello,ab,c, separada por comas (,). Instrucción de ejemplo:

      SELECT FIND_IN_SET('ab', 'abc,hello,ab,c') AS pos;

      Resultado:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Ejemplo 2: buscar la posición de la cadena hi dentro de la cadena abc,hello,ab,c, separada por comas (,). Instrucción de ejemplo:

      SELECT FIND_IN_SET('hi', 'abc,hello,ab,c') AS pos;

      Resultado:

      +------------+
      | pos        |
      +------------+
      | 0          |
      +------------+
    • Ejemplo 3: buscar la posición de la cadena ab dentro de la cadena abc_hello_ab_c, separada por guiones bajos (_). Instrucción de ejemplo:

      SELECT FIND_IN_SET('ab', 'abc_hello_ab_c', '_') AS pos;

      Resultado:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Ejemplo 4: el parámetro de entrada str1 o str2 es NULL. Instrucción de ejemplo:

      SELECT FIND_IN_SET(null, 'abc,hello,ab,c') AS pos;

      Resultado:

      +------------+
      | pos        |
      +------------+
      | NULL       |
      +------------+

FORMAT_NUMBER

  • Sintaxis

    STRING FORMAT_NUMBER(DOUBLE|BIGINT|INT|SMALLINT|TINYINT|FLOAT|DECIMAL|STRING <expr1>, INT <expr2>)
  • Descripción

    Convierte expr1 en una cadena con el formato definido por expr2.

  • Parámetros

  • expr1: obligatorio. Valor de tipo FLOAT, DOUBLE o DECIMAL. Este parámetro especifica la expresión que desea formatear.

  • expr2: obligatorio. Valor de tipo INT. Valores válidos: de 0 a 340. Este parámetro indica la cantidad de decimales que desea conservar. También se puede expresar con un formato similar a #,###,###.##. La cantidad de decimales devueltos varía según el valor de este parámetro.

  • Valor devuelto

    Se devuelve un valor de tipo STRING. El valor devuelto varía según las siguientes reglas:

    • Si el valor de expr2 es mayor que 0 y menor o igual a 340, se devuelve un valor redondeado a la cantidad de decimales especificada.

    • Si el valor de expr2 es 0, el valor devuelto contiene solo la parte entera, sin punto ni parte decimal.

    • Si el valor de expr2 es menor que 0 o greater than 340, se devuelve un error.

    • Si expr1 o expr2 está vacío o se establece en null, se devuelve null.

  • Ejemplos

    • Ejemplo 1: formatear un número según lo especificado. Instrucciones de ejemplo:

      -- Returns 5.230.
      SELECT FORMAT_NUMBER(5.230134523424545456,3);
      -- Returns 12,332.123.
      SELECT FORMAT_NUMBER(12332.123456, '#,###,###,###.###');
    • Ejemplo 2: uno de los parámetros de entrada está vacío o es NULL. Instrucciones de ejemplo:

      -- Returns NULL.
      SELECT FORMAT_NUMBER('',3);
      -- Returns NULL.
      SELECT FORMAT_NUMBER(null,3);

FROM_CHARSET

  • Sintaxis

    STRING FROM_CHARSET(binary <source>, string <source_charset>, [string <mode>])
  • Descripción

    FROM_CHARSET convierte datos binarios con codificación distinta a UTF-8 en una cadena UTF-8 para realizar cálculos posteriores.

  • Parámetros

    • source: obligatorio. Valor de tipo BINARY. Este parámetro especifica los datos binarios que desea convertir.

    • source_charset: obligatorio. Valor de tipo STRING. Este parámetro especifica el formato de codificación original de los datos binarios indicados en source. Valores válidos: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII, GB2312, GBK y GB18030.

    • mode: opcional. Valor de tipo STRING. Este parámetro indica el modo de procesamiento cuando un carácter no se puede convertir durante la transformación de los datos binarios de source a una cadena con el formato de codificación especificado. Valores válidos:

      • NONE: reporta un error. No se aplica ningún procesamiento. Este es el valor predeterminado.

      • TRANSLIT: reemplaza el carácter por uno similar dentro del formato de codificación especificado.

      • IGNORE: omite el error y continúa con la ejecución del comando.

  • Valor de retorno

    Devuelve un valor de tipo STRING con codificación UTF-8. Cuando los parámetros son NULL o cadenas vacías, el valor de retorno sigue estas reglas:

    • Si algún parámetro de entrada es NULL, devuelve NULL.

    • Si algún parámetro de entrada es una cadena vacía, devuelve un error.

  • Ejemplos

    • Ejemplo 1: convertir datos binarios con codificación UTF-8 en una cadena con codificación UTF-8.

      SELECT FROM_CHARSET(unhex('e58aa0e6b2b9e9949fe696a4e68bb70a'),'UTF-8', 'TRANSLIT');
    • Ejemplo 2: convertir datos binarios con codificación GBK en una cadena con codificación UTF-8.

      SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), 'GBK');
    • Ejemplo 3: si un parámetro de entrada es null, se devuelve null.

      SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), null);

FROM_JSON

  • Sintaxis

    from_json(<jsonStr>, <schema>)
  • Descripción

    Devuelve datos de tipo ARRAY, MAP o STRUCT a partir de la cadena JSON jsonStr y del formato de salida schema.

  • Parámetros

    • jsonStr: obligatorio. La cadena JSON que introdujo.

    • schema: obligatorio. El esquema de la cadena JSON. El valor de este parámetro debe tener el mismo formato que la instrucción para crear una tabla, como array<bigint>, map<string, array<string>> o struct<a:int, b:double, .

      Nota

      Las claves de una estructura (struct) distinguen entre mayúsculas y minúsculas. También puede especificar una estructura con el formato a BIGINT, b DOUBLE, que equivale a STRUCT<a:BIGINT, b:DOUBLE>.

      A continuación se muestra una tabla que describe las correspondencias entre los tipos de datos JSON y los tipos de datos de MaxCompute.

      Tipo de datos JSON

      Tipo de datos de MaxCompute

      OBJECT

      STRUCT, MAP y STRING

      ARRAY

      ARRAY y STRING

      NUMBER

      TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL y STRING

      BOOLEAN

      BOOLEAN y STRING

      STRING

      STRING, CHAR, VARCHAR, BINARY, DATE y DATETIME

      NULL

      Todos los tipos

      Nota

      Las cadenas JSON de los tipos OBJECT y ARRAY se analizan tanto como sea posible. Si el tipo de dato de la cadena JSON no corresponde a ningún tipo de dato de MaxCompute, la cadena se omite. Para facilitar su uso, todos los tipos de datos JSON se pueden convertir al tipo STRING compatible con MaxCompute. Al convertir una cadena JSON de tipo NUMBER a un valor FLOAT, DOUBLE o DECIMAL, no se garantiza la precisión del resultado. Se recomienda convertir primero la cadena JSON a un valor STRING y después transformar ese valor al tipo FLOAT, DOUBLE o DECIMAL.

  • Valor de retorno

    Se devuelve un valor de tipo ARRAY, MAP o STRUCT.

  • Ejemplos

    • Ejemplo 1: convertir una cadena JSON específica en un valor de un tipo de dato determinado. Instrucción de ejemplo:

      -- The return value is {"a":1,"b":0.8}. 
      select from_json('{"a":1, "b":0.8}', 'a int, b double');
      -- The return value is {"time":"26/08/2015"}. 
      select from_json('{"time":"26/08/2015"}', 'time string');
      -- The return value is {"a":1,"b":0.8}. 
      select from_json('{"a":1, "b":0.8}', 'a int, b double, c string');
      -- The return value is [1,2,3]. 
      select from_json('[1, 2, 3, "a"]', 'array<bigint>');
      -- The return value is {"d":"v","a":"1","b":"[1,2,3]","c":"{}"}. 
      select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>');
    • Ejemplo 2: usar las funciones map_keys y from_json para obtener todas las claves de una cadena JSON. También puede utilizar JSON_KEYS con el mismo propósito. Instrucción de ejemplo:

      -- The return value is ["a","b"]. 
      select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));

GET_JSON_OBJECT

  • Sintaxis

    STRING GET_JSON_OBJECT(JSON|STRING <json>, STRING <json_path>)
    
    -- Example: Returns Alice.
    SELECT GET_JSON_OBJECT(JSON '{"name": "Alice", "age": 30}', '$.name');
  • Descripción

    La función GET_JSON_OBJECT extrae una cadena de una cadena JSON o de un valor de tipo JSON mediante una ruta JSON específica, json_path.

  • Notas de uso

    • La función GET_JSON_OBJECT no admite sintaxis de expresiones regulares en las rutas JSON.

    • La sintaxis de rutas JSON de la nueva JSON data type difiere de la especificación original. Esto podría generar problemas de compatibilidad.

    • Si una consulta contiene varias funciones GET_JSON_OBJECT que procesan los mismos datos JSON, la función analiza repetidamente la misma cadena. Esto afecta negativamente el rendimiento e incrementa los costos. Para evitarlo, utilice GET_JSON_OBJECT junto con una función definida por el usuario que devuelve tablas (UDTF) para transformar los datos de registro JSON.

  • Parámetros

    • json: obligatorio. Los datos JSON que desea procesar. Este parámetro admite dos tipos de entrada: JSON y STRING.

      • Tipo JSON: un valor de tipo JSON. Debe tener el formato {"Key":"Value", "Key":"Value",...}, como JSON '{"name": "Alice", "age": 30}'.

      • Tipo STRING: si la entrada es de tipo STRING, debe cumplir con los siguientes requisitos de formato:

        • La cadena debe tener el formato '{"Key":"Value", "Key":"Value",...}', como '{"name": "Alice", "age": 30}'.

        • Las comillas dobles (") deben escaparse con dos barras invertidas (\\).

        • Las comillas simples (') deben escaparse con una barra invertida (\).

    • json_path: obligatorio. Un valor STRING que especifica la expresión de ruta JSON utilizada para extraer datos. La ruta debe comenzar con el carácter $, como $.aliyun.test[0].demo. La expresión de ruta utiliza los siguientes caracteres:

      • $: indica el nodo raíz.

      • . o ['']: indica un nodo secundario. Se usa para analizar objetos JSON, como $.store.book. Si una clave JSON contiene un punto (.), puede utilizar [''] en su lugar.

        La extracción de datos mediante [''] solo es compatible si ejecuta la instrucción SET odps.sql.udf.getjsonobj.new=true;.

      • []: [number] indica un subíndice de arreglo. El subíndice comienza en 0.

      • *: carácter comodín para []. Devuelve todo el arreglo. El asterisco (*) no se puede escapar.

  • Valor de retorno

    Devuelve un valor de tipo STRING. Este valor corresponde a los datos extraídos de la ruta especificada. La función sigue estas reglas para determinar el valor de retorno:

    • Si json es válido y json_path existe, se devuelve la cadena correspondiente.

    • Si json está vacío o tiene un formato no válido, se devuelve NULL.

    • Si json_path contiene [*], el valor de retorno no tendrá formato de arreglo. Para forzar un formato de arreglo uniforme, ejecute la instrucción SET odps.sql.force.getjsonobj.array.format=true;.

    • Si json_path no es válido, se devuelve NULL.

    Comportamiento de retorno

    • Puede controlar el comportamiento de retorno de la función estableciendo la marca project-level or session-level con el siguiente comando: SET odps.sql.udf.getjsonobj.new=true/false;.

      Los dos comportamientos de retorno asociados a las distintas configuraciones de la marca son los siguientes:

      Importante

      Se recomienda utilizar la configuración SET odps.sql.udf.getjsonobj.new=true;. Esta opción ofrece un comportamiento más estándar, simplifica el procesamiento de datos y mejora el rendimiento. Si su proyecto de MaxCompute tiene trabajos existentes que dependen del comportamiento de escape de caracteres reservados de JSON, se recomienda mantener el comportamiento original. Así se evitan errores o problemas de exactitud que podrían surgir al cambiar al nuevo comportamiento sin validarlo previamente.

      Configuración de parámetros

      SET odps.sql.udf.getjsonobj.new=true;

      SET odps.sql.udf.getjsonobj.new=false;

      Comportamiento de retorno

      Devuelve la cadena original sin modificaciones.

      Devuelve la cadena con los caracteres reservados de JSON escapados.

      El valor de retorno es una cadena JSON que se puede analizar directamente. No necesita usar funciones como REPLACE o REGEXP_REPLACE para sustituir las barras invertidas.

      Los caracteres reservados de JSON, como los saltos de línea (\n) y las comillas ("), se devuelven como las cadenas '\n' y '\"'.

      Análisis de claves duplicadas

      Un objeto JSON puede contener claves duplicadas y se analiza correctamente.

      -- Returns 1.
      SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');

      Un objeto JSON no puede contener claves duplicadas. Si las tiene, el análisis podría fallar.

      -- Returns NULL.
          SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');

      Orden de clasificación de la salida

      La salida se ordena igual que la cadena JSON original.

      -- Returns {"b":"1","a":"2"}.
      SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');

      La salida se ordena alfabéticamente.

      -- Returns {"a":"2","b":"1"}.
          SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');
    • Si habilita el modo de compatibilidad con Hive mediante el comando SET odps.sql.hive.compatible=true;, la función GET_JSON_OBJECT conserva las cadenas originales en su valor de retorno.

    • En los proyectos de MaxCompute creados el 21 de enero de 2021 o después, el comportamiento de retorno predeterminado de la función GET_JSON_OBJECT consiste en conservar las cadenas originales.

    • En los proyectos de MaxCompute creados antes del 21 de enero de 2021, el comportamiento de retorno predeterminado de la función GET_JSON_OBJECT consiste en escapar los caracteres reservados de JSON.

    • Utilice el siguiente ejemplo para determinar qué comportamiento emplea la función GET_JSON_OBJECT en su proyecto de MaxCompute. Para ello, ejecute este comando:

      SELECT GET_JSON_OBJECT('{"a":"[\\"1\\"]"}', '$.a');
      --The return value if the behavior is to escape JSON reserved characters:
      [\"1\"]
      
      --The return value if the behavior is to preserve original strings:
      ["1"]
      Para cambiar el comportamiento de retorno predeterminado de la función GET_JSON_OBJECT de su proyecto y que conserve las cadenas originales, envíe un ticket. Así evita configurar la propiedad a nivel de sesión cada vez que inicie una.
  • Ejemplos

    Parámetro de entrada JSON

    Ejemplo 1: obtener valores de claves específicas desde datos JSON

    -- Returns 1.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.a');
    
    -- Returns NULL.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.c');

    Ejemplo 2: un json_path no válido devuelve NULL.

    -- Returns NULL.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$invalid_json_path');

    Parámetro de entrada STRING

    Ejemplo 1: extraer información del objeto JSONsrc_json.json

    -- Prepare the test data.
    CREATE TABLE IF NOT EXISTS src_json (
        json STRING
    );
    
    INSERT OVERWRITE TABLE src_json
    VALUES
    ('{"store":
      {"fruit":[{"weight":8,"type":"apple"},
        {"weight":9,"type":"pear"}],
         "bicycle":{"price":19.95,
         "color":"red"}},
       "email":"amy@only_for_json_udf_test.net",
       "owner":"amy"}');
    
    -- Extract the information of the owner field. The return value is amy.
    SELECT GET_JSON_OBJECT(src_json.json, '$.owner') FROM src_json;
    
    -- Optional. Output by preserving the original string.
    SET odps.sql.udf.getjsonobj.new=true;
    -- Extract the information of the first array in the store.fruit field. The return value is {"weight":8,"type":"apple"}.
    SELECT GET_JSON_OBJECT(src_json.json, '$.store.fruit[0]') FROM src_json;
    
    -- Extract the information of a non-existent field. The return value is NULL.
    SELECT GET_JSON_OBJECT(src_json.json, '$.non_exist_key') FROM src_json;

    Ejemplo 2: extraer información de datos de arreglos JSON

    -- Returns 2222.
    SELECT GET_JSON_OBJECT('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]');
    
    -- Output by preserving the original string.
    SET odps.sql.udf.getjsonobj.new=true;
    -- Returns ["h0","h1","h2"].
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
    
    -- Output by escaping JSON reserved characters.
    SET odps.sql.udf.getjsonobj.new=false;
    -- Returns ["h0","h1","h2"].
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
    
    -- Returns h1.
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]');

    Ejemplo 3: extraer información de datos JSON cuya clave contiene un punto (.)

    -- Prepare the test data.
    CREATE TABLE json_test (id STRING, json STRING);
    
    -- Insert data where the key contains a period (.).
    INSERT INTO TABLE json_test (id, json) VALUES 
    ("1", 
      "{
        \"China.beijing\":
          {\"school\":
            {\"id\":0,\"book\":
              [{\"title\": \"A\",\"price\": 8.95},
               {\"title\": \"B\",\"price\": 10.2}]
            }
          }
      }"
    );
    
    -- Insert data where the key does not contain a period (.).
    INSERT INTO TABLE json_test (id, json) VALUES 
    ("2", 
      "{
        \"China_beijing\":
          {\"school\":
            {\"id\":0,\"book\":
              [{\"title\": \"A\",\"price\": 8.95},
               {\"title\": \"B\",\"price\": 10.2}]
            }
          }
      }"
    );
    
    -- Use square brackets [''] to parse data that contains a period (.).
    -- This extracts the 'id' value under 'China.beijing'. The return value is 0.
    SELECT GET_JSON_OBJECT(json, "$['China.beijing'].school['id']") FROM json_test WHERE id =1;
    
    -- For data without special characters, both '.' and [''] are valid and equivalent.
    -- This extracts the 'id' value under 'China_beijing'. The return value is 0.
    SELECT GET_JSON_OBJECT(json, "$['China_beijing'].school['id']") FROM json_test WHERE id =2;
    SELECT GET_JSON_OBJECT(json, "$.China_beijing.school['id']") FROM json_test WHERE id =2;

    Ejemplo 4: usar [''] para claves que contienen un punto (.)

    SET odps.sql.udf.getjsonobj.new=true;
    
    -- Returns 1.
    SELECT GET_JSON_OBJECT('{"a.1":"1","a":"2"}', '$[\'a.1\']');

    Ejemplo 5: entrada JSON vacía o no válida

    -- Returns NULL.
    SELECT GET_JSON_OBJECT('','$.array[1][1]');
    
    -- Returns NULL.
    SELECT GET_JSON_OBJECT('"array":["aaaa",1111],"bbbb":["cccc",3333]','$.array[1][1]');

    Ejemplo 6: cadenas JSON con caracteres de escape

    SET odps.sql.udf.getjsonobj.new=true;
    
    --Returns "1".
    SELECT GET_JSON_OBJECT('{"a":"\\"1\\"","b":"2"}', '$.a'); 
    
    --Returns '1'.
    SELECT GET_JSON_OBJECT('{"a":"\'1\'","b":"2"}', '$.a');

    Ejemplo 7: compatibilidad con emojis

    -- Returns the emoji symbol.
    SELECT GET_JSON_OBJECT('{"a":"<Emoji symbol>"}', '$.a');
    Nota: DataWorks no permite introducir caracteres emoji directamente. Puede usar una herramienta como Data Integration para escribir en MaxCompute las cadenas codificadas que corresponden a los emojis. Después, utilice la función GET_JSON_OBJECT para procesarlos.

INITCAP

  • Sintaxis

    string initcap(<str>)
  • Descripción

    Convierte str a formato de título, donde las palabras se separan por espacios. La primera letra de cada palabra queda en mayúscula y el resto en minúsculas.

  • Parámetros

    str: obligatorio. Tipo STRING. Cadena de entrada.

  • Valor de retorno

    Devuelve una cadena con la primera letra de cada palabra en mayúscula y el resto en minúsculas.

  • Ejemplo

    -- Returns Odps Sql.
    SELECT initcap("oDps sql");

INSTR

  • Sintaxis

    bigint instr(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])
  • Descripción

    Busca la posición de la subcadena str2 dentro de la cadena str1.

  • Parámetros

    • str1: obligatorio. Tipo STRING. Cadena de destino donde se realiza la búsqueda. Si la entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING. Otros tipos generan un error.

    • str2: obligatorio. Tipo STRING. Subcadena que se va a buscar. Si la entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING. Otros tipos generan un error.

    • start_position: opcional. Valor de tipo BIGINT. Otros tipos de datos generan un error. Este parámetro indica la posición del carácter en str1 desde donde comienza la búsqueda. La posición inicial predeterminada es el primer carácter, es decir, la posición 1. Si start_position es negativo, la búsqueda cuenta hacia atrás desde el final de la cadena: el último carácter ocupa la posición -1, el penúltimo la -2, y así sucesivamente.

    • nth_appearance: opcional. Valor de tipo BIGINT mayor que 0. Este parámetro indica la posición de la nth_appearance-ésima coincidencia de str2 dentro de str1. Si nth_appearance pertenece a otro tipo de dato o es menor o igual a 0, se devuelve un error.

  • Valor de retorno

    Devuelve un valor de tipo BIGINT. El valor de retorno sigue estas reglas:

    • Si str1 no contiene str2, devuelve 0.

    • Si str2 está vacía, siempre coincide correctamente. Por ejemplo, select instr('abc',''); devuelve 1.

    • Si str1, str2, start_position o nth_appearance es NULL, devuelve NULL.

  • Ejemplos

    • Ejemplo 1: buscar la posición del carácter e en la cadena Tech on the net. Instrucción de ejemplo:

      -- Returns 2.
      select instr('Tech on the net', 'e');
    • Ejemplo 2: buscar la posición de la subcadena on en la cadena Tech on the net. Instrucción de ejemplo:

      -- Returns 6.
      select instr('Tech on the net', 'on');
    • Ejemplo 3: buscar la posición de la segunda aparición del carácter e en la cadena Tech on the net, comenzando desde el tercer carácter. Instrucción de ejemplo:

      -- Returns 14.
      select instr('Tech on the net', 'e', 3, 2);
    • Ejemplo 4: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select instr('Tech on the net', null);

IS_ENCODING

  • Sintaxis

    boolean is_encoding(string <str>, string <from_encoding>, string <to_encoding>)
  • Descripción

    Determina si la cadena de entrada str se puede convertir del juego de caracteres from_encoding a to_encoding. También sirve para detectar texto ilegible; normalmente se establece from_encoding en UTF-8 y to_encoding en GBK.

  • Parámetros

    • str: obligatorio. Tipo STRING. Las cadenas vacías se consideran válidas para cualquier juego de caracteres.

    • from_encoding, to_encoding: obligatorio. Tipo STRING. Juegos de caracteres de origen y de destino.

  • Valor de retorno

    Devuelve un valor de tipo BOOLEAN. El valor de retorno sigue estas reglas:

    • Si str se convierte correctamente, devuelve True; de lo contrario, False.

    • Si str, from_encoding o to_encoding es NULL, devuelve NULL.

JSON_TUPLE

  • Sintaxis

    string json_tuple(string <json>, string <key1>, string <key2>,...)
  • Descripción

    Extrae cadenas de una cadena JSON estándar a partir de un conjunto de claves de entrada, como (key1,key2,...).

  • Parámetros

    • json: obligatorio. Valor de tipo STRING. Este parámetro especifica una cadena JSON estándar.

    • key: obligatorio. Valor de tipo STRING. Este parámetro describe la path de un objeto JSON dentro de la cadena. El valor no puede comenzar con el signo de dólar ($). Puede introducir varias claves a la vez. MaxCompute analiza los objetos JSON mediante . o ['']. Si una clave del objeto JSON incluye un punto (.), puede utilizar [''].

  • Valor de retorno

    Se devuelve un valor de tipo STRING.

    Nota
    • Si json está vacío o no es válido, se devuelve null.

    • Si key está vacía, no es válida o no existe en la cadena JSON, se devuelve null.

    • Si json es válido y key existe, se devuelve la cadena correspondiente.

    • Esta función puede analizar datos JSON que contienen caracteres chinos.

    • Esta función puede analizar datos JSON anidados.

    • Esta función puede analizar datos JSON que contienen arreglos anidados.

    • El análisis equivale a ejecutar GET_JSON_OBJECT junto con set odps.sql.udf.getjsonobj.new=true;. Para obtener varios objetos de una cadena JSON, tendría que llamar a la función GET_JSON_OBJECT múltiples veces, lo que provoca que la cadena se analice repetidamente. En cambio, JSON_TUPLE le permite introducir varias claves a la vez y analiza la cadena JSON una sola vez. Por lo tanto, JSON_TUPLE es más eficiente que GET_JSON_OBJECT.

    • JSON_TUPLE es una función definida por el usuario que devuelve tablas (UDTF). Si desea seleccionar algunas columnas de una tabla, utilice JSON_TUPLE junto con la cláusula LATERAL VIEW.

KEYVALUE

  • Sintaxis

    keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)
    keyvalue(string <str>,string <key>) 
  • Descripción

    Divide la cadena str en pares clave-valor mediante split1, separa los pares con split2 y devuelve el valor correspondiente a key.

  • Parámetros

    • str: obligatorio. Tipo STRING. Cadena que se va a dividir.

    • split1, split2: opcional. Tipo STRING. Cadenas delimitadoras para la división. Si no se especifican, el valor predeterminado de split1 es ";" y el de split2 es ":". Si una subcadena dividida por split1 contiene varios elementos split2, el resultado queda indefinido.

    • key: obligatorio. Tipo STRING. Después de dividir con split1 y split2, devuelve el valor de key.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto sigue estas reglas:

    • Si split1 o split2 es NULL, devuelve NULL.

    • Si str o key es NULL, o si no existe ninguna key coincidente, devuelve NULL.

    • Si coinciden varios pares clave-valor, devuelve el valor de la primera key coincidente.

  • Ejemplos

    • Ejemplo 1: divida la cadena 0:1/;1:2 en pares clave-valor y devuelva el valor de la clave 1. Comando de ejemplo:

      -- Returns 2.
      select keyvalue('0:1/;1:2', 1);

      No se especificaron los parámetros split1 ni split2. El valor predeterminado de split1 es un punto y coma (";") y el de split2 es dos puntos (":").

      Tras dividir con split1, los pares clave-valor son 0:1/,1:2. Al dividir con split2, se obtiene lo siguiente:

      0 1/  
      1 2

      Devuelve el valor 2 para la clave 1.

    • Ejemplo 2: divida la cadena “\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;” con “\;” como split1 y ":" como split2. Luego, devuelva el valor de la clave tf. Comando de ejemplo:

      -- Returns 21910.
      select keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf");

      Al dividir la cadena "\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;" con el delimitador "\;", se generan a continuación los siguientes pares clave-valor.

      decreaseStore:1,xcard:1,isB2C:1,tf:21910,cart:1,shipping:2,pf:0,market:shoes,instPayAmount:0 

      El resultado de dividir con ":" es el siguiente.

      decreaseStore 1  
      xcard 1  
      isB2C 1  
      tf 21910  
      cart 1  
      shipping 2  
      pf 0  
      market shoes  
      instPayAmount 0

      Devuelve el valor 21910 para la clave tf.

KEYVALUE_TUPLE

  • Sintaxis

    KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN)
  • Descripción

    Divide la cadena str en pares clave-valor mediante split1, separa los pares con split2 y devuelve los valores de varias claves key.

  • Parámetros

    • str: obligatorio. Tipo STRING. Cadena que se va a dividir.

    • split1, split2: obligatorio. Tipo STRING. Cadenas delimitadoras para la división. Si una subcadena dividida por split1 contiene varios elementos split2, el resultado queda indefinido.

    • key: obligatorio. Tipo STRING. Después de dividir con split1 y split2, devuelve el valor de key.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto sigue estas reglas:

    • Si split1 o split2 es NULL, devuelve NULL.

    • Si str o key es NULL, o si no existe ninguna key coincidente, devuelve NULL.

  • Ejemplo

    -- Create table
    create table mf_user (
    user_id string,
    user_info string
    );
    -- Insert data
    insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd');
    -- Query
    SELECT user_id,
    KEYVALUE(user_info,';',':','age') as age,
    KEYVALUE(user_info,';',':','genda') as genda,
    KEYVALUE(user_info,';',':','address') as address
    FROM mf_user;
    -- Equivalent to KEYVALUE query
    SELECT user_id,
    age,
    genda,
    address
    FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;

    El resultado es el siguiente.

    +------------+------------+------------+------------+
    | user_id    | age        | genda      | address    |
    +------------+------------+------------+------------+
    | 1          | 18         | f          | abc        |
    | 2          | 20         | m          | bcd        |
    +------------+------------+------------+------------+

LENGTH

  • Sintaxis

    bigint length(string <str>)
  • Descripción

    Calcula la longitud de la cadena str.

  • Parámetros

    str: obligatorio. Tipo STRING. Si el valor de entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING.

  • Valor devuelto

    Devuelve un valor de tipo BIGINT. El valor devuelto sigue estas reglas:

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, devuelve un error.

    • Si str es NULL, devuelve NULL.

    • Si str no tiene codificación UTF-8, devuelve -1.

  • Ejemplos

    • Ejemplo 1: calcule la longitud de la cadena Tech on the net. Comando de ejemplo:

      -- Returns 15.
      select length('Tech on the net');
    • Ejemplo 2: el parámetro de entrada es NULL. Comando de ejemplo:

      -- Returns NULL.
      select length(null);

LENGTHB

  • Sintaxis

    bigint lengthb(string <str>)
  • Descripción

    Calcula la longitud en bytes de la cadena str.

  • Parámetros

    str: obligatorio. Tipo STRING. Si el valor de entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING.

  • Valor devuelto

    Devuelve un valor de tipo BIGINT. El valor devuelto sigue estas reglas:

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, devuelve un error.

    • Si str es NULL, devuelve NULL.

  • Ejemplos

    • Ejemplo 1: calcule la longitud en bytes de la cadena Tech on the net. Comando de ejemplo:

      -- Returns 15.
      select lengthb('Tech on the net');
    • Ejemplo 2: el parámetro de entrada es NULL. Comando de ejemplo:

      -- Returns NULL.
      select lengthb(null);

LOCATE

  • Sintaxis

    bigint locate(string <substr>, string <str>[, bigint <start_pos>]) 
  • Descripción

    Busca la posición de la subcadena substr dentro de str. Use start_pos para especificar la posición inicial (el conteo comienza en 1).

  • Parámetros

    • substr: obligatorio. Tipo STRING. Subcadena que se va a buscar.

    • str: obligatorio. Tipo STRING. Cadena donde se realiza la búsqueda.

    • start_pos: opcional. Tipo BIGINT. Posición inicial de la búsqueda.

  • Valor devuelto

    Devuelve un valor de tipo BIGINT. El valor devuelto sigue estas reglas:

    • Si str no contiene substr, devuelve 0.

    • Si str o substr es NULL, devuelve NULL.

    • Si start_pos es NULL, devuelve 0.

  • Ejemplos

    • Ejemplo 1: busque la posición de la cadena ab dentro de abchelloabc. Comando de ejemplo:

      -- Returns 1.
      select locate('ab', 'abchelloabc');
    • Ejemplo 2: busque la posición de la cadena hi dentro de abchelloabc. Comando de ejemplo:

      -- Returns 0.
      select locate('hi', 'abc,hello,ab,c');
    • Ejemplo 3: start_pos es NULL. Comando de ejemplo:

      -- Returns 0.
      select locate('ab', 'abhelloabc', null);

LPAD

  • Sintaxis

    string lpad(string <str1>, int <length>, string <str2>)
  • Descripción

    Rellena la cadena str1 por la izquierda hasta alcanzar length caracteres, usando la cadena str2. Esta función es una extensión de MaxCompute V2.0.

  • Parámetros

    • str1: obligatorio. Tipo STRING. Cadena que se va a rellenar por la izquierda.

    • length: obligatorio. Tipo INT. Número de caracteres del relleno izquierdo.

    • str2: obligatorio. Cadena de relleno.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto sigue estas reglas:

    • Si length es menor que la longitud de str1, devuelve los length caracteres más a la izquierda de str1.

    • Si length es 0, devuelve una cadena vacía.

    • Si no hay parámetros de entrada o alguno de ellos es NULL, devuelve NULL.

  • Ejemplos

    • Ejemplo 1: use la cadena 12 para rellenar por la izquierda la cadena abcdefgh hasta llegar a 10 caracteres. A continuación se muestra el comando de ejemplo.

      -- Returns 12abcdefgh.
      select lpad('abcdefgh', 10, '12');
    • Ejemplo 2: utilice la cadena 12 para rellenar por la izquierda abcdefgh hasta una longitud de 5 caracteres. Este es el comando de ejemplo.

      -- Returns abcde.
      select lpad('abcdefgh', 5, '12');
    • Ejemplo 3: length es 0. Comando de ejemplo:

      -- Returns empty string.
      select lpad('abcdefgh' ,0, '12'); 
    • Ejemplo 4: uno de los parámetros de entrada es NULL. Comando de ejemplo:

      -- Returns NULL.
      select lpad(null ,0, '12');

LTRIM

  • Sintaxis

    string ltrim(string <str>[, <trimChars>])
    string trim(leading [<trimChars>] from <str>)
  • Descripción

    Elimina caracteres del extremo izquierdo de str:

    • Si no se especifica trimChars, elimina los espacios iniciales de forma predeterminada.

    • Si especifica trimChars, la función trata los caracteres de trimChars como un conjunto. Luego, quita del extremo izquierdo de str la subcadena más larga posible formada exclusivamente por caracteres del conjunto trimChars.

  • Parámetros

    • str: obligatorio. Tipo STRING. Cadena que se va a recortar. Si el valor de entrada es BIGINT, DECIMAL, DOUBLE o DATETIME, se convierte implícitamente a STRING.

    • trimChars: opcional. Tipo STRING. Caracteres que se van a eliminar.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto sigue estas reglas:

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, devuelve un error.

    • Si str o trimChars es NULL, devuelve NULL.

  • Ejemplos

    • Ejemplo 1: elimine los espacios iniciales de la cadena yxTxyomxx . Comandos de ejemplo:

      -- Returns yxTxyomxx.
      select ltrim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(leading from ' yxTxyomxx ');
    • Ejemplo 2: elimine todos los caracteres iniciales de la cadena yxTxyomxx que pertenezcan al conjunto xy.

      -- Returns Txyomxx. Any leading x or y is removed.
      select ltrim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(leading 'xy' from 'yxTxyomxx');
    • Ejemplo 3: el parámetro de entrada es NULL. Comandos de ejemplo:

      -- Returns NULL.
      select ltrim(null);
      select ltrim('yxTxyomxx', null);

MASK_HASH

  • Sintaxis

    mask_hash(<expr>)
  • Descripción

    Devuelve un valor hash calculado a partir de la expresión de cadena expr. Los valores hash idénticos indican que las expresiones también lo son.

  • Parámetros

    expr: obligatorio. Expresión de cadena para calcular el hash. Admite los tipos STRING, CHAR, VARCHAR y BINARY.

  • Valor devuelto

    Devuelve un valor hash de 64 bytes. Para expresiones que no son de cadena, devuelve null (compatible con Hive).

  • Ejemplo

    -- Returns hash for abc
    select mask_hash("abc");
    -- Returns
    +------------+
    | _c0        |
    +------------+
    | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
    +------------+
    
    -- Returns NULL for non-string input
    select mask_hash(100);
    -- Returns
    +------------+
    | _c0        |
    +------------+
    | NULL       |
    +------------+

MD5

  • Sintaxis

    string md5(string <str>)
  • Descripción

    Calcula el hash MD5 de la cadena str.

  • Parámetros

    str: obligatorio. Tipo STRING. Si el valor de entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto sigue estas reglas:

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, devuelve un error.

    • Si str es NULL, devuelve NULL.

  • Ejemplos

    • Ejemplo 1: calcule el hash MD5 de la cadena Tech on the net. Comando de ejemplo:

      -- Returns ddc4c4796880633333d77a60fcda9af6.
      select md5('Tech on the net');
    • Ejemplo 2: el parámetro de entrada es NULL. Comando de ejemplo:

      -- Returns NULL.
      select md5(null);

PARSE_URL

  • Sintaxis

    string parse_url(string <url>, string <part>[, string <key>])
  • Descripción

    Analiza sintácticamente url y extrae la información que indica part.

  • Parámetros

    • url: obligatorio. Tipo STRING. Enlace URL. Las URL no válidas devuelven un error.

    • part: obligatorio. Tipo STRING. Valores válidos: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO (no distingue entre mayúsculas y minúsculas).

    • key: opcional. Cuando part es QUERY, devuelve el valor de key.

  • Descripción del valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto sigue estas reglas:

    • Si url, part o key es NULL, devuelve NULL.

    • Si part no es válido, devuelve un error.

  • Ejemplo

    -- Returns example.com.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST');
    -- Returns /over/there/index.dtb.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PATH');
    -- Returns animal.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'QUERY', 'type');
    -- Returns nose.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'REF');
    -- Returns file.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PROTOCOL');
    -- Returns username:password@example.com:8042.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'AUTHORITY');
    -- Returns username:password.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'USERINFO');

PARSE_URL_TUPLE

  • Sintaxis

    string parse_url_tuple(string <url>, string <key1>, string <key2>,...)
  • Descripción

    Analiza sintácticamente url y extrae las cadenas que indican las claves de entrada key1, key2, etcétera. Es similar a PARSE_URL, pero extrae varias claves de forma simultánea y ofrece un mejor rendimiento.

  • Parámetros

    • url: obligatorio. Tipo STRING. Enlace URL. Las URL no válidas devuelven un error.

    • key1, key2: obligatorio. Tipo STRING. Claves que se van a extraer. Valores válidos:

      • HOST: dirección del host (dominio o IP).

      • PATH: ruta al recurso de red en el servidor.

      • QUERY: cadena de consulta (contenido que se va a consultar).

      • REF: indica el identificador de fragmento de una URL, es decir, el contenido después del símbolo #.

      • PROTOCOL: tipo de protocolo.

      • AUTHORITY: dominio o IP del servidor, puerto e información de autenticación del usuario (nombre de usuario y contraseña).

      • FILE: ruta y contenido de la consulta (PATH + QUERY).

      • USERINFO: información de autenticación del usuario.

      • QUERY:<KEY>: valor de la clave especificada en la cadena de consulta.

      No distingue entre mayúsculas y minúsculas. Los valores no válidos devuelven un error.

  • Descripción del valor devuelto

    Devuelve un valor de tipo STRING. Si url o key es NULL, devuelve un error.

  • Ejemplo

    Extraiga las cadenas de cada clave a partir de file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose. Comando de ejemplo:

    select parse_url_tuple('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'AUTHORITY', 'FILE', 'USERINFO', 'QUERY:type', 'QUERY:name') as (item0, item1, item2, item3, item4, item5, item6, item7, item8, item9);

    Devuelve:

    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
    | item0      | item1      | item2      | item3      | item4      | item5      | item6      | item7      | item8      | item9      |
    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
    | example.com | /over/there/index.dtb | type=animal&name=narwhal | nose       | file       | username:password@example.com:8042 | /over/there/index.dtb?type=animal&name=narwhal | username:password | animal     | narwhal    |
    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+

REGEXP_COUNT

  • Sintaxis

    bigint regexp_count(string <source>, string <pattern>[, bigint <start_position>])
  • Descripción

    Cuenta las subcadenas de source que coinciden con el pattern especificado, a partir de start_position.

  • Parámetros

    • source: obligatorio. Tipo STRING. Cadena donde se realiza la búsqueda. Otros tipos devuelven un error.

    • pattern: obligatorio. Constante STRING o expresión regular. Patrón que se va a buscar. Para obtener más lineamientos sobre expresiones regulares, consulte RLIKE string matching. Un pattern vacío o no válido devuelve un error.

    • start_position: opcional. Constante de tipo BIGINT. Su valor debe ser mayor que 0. Si pertenece a otro tipo de datos o es menor o igual a 0, se devuelve un error. Si no especifica este parámetro, el valor predeterminado es 1, lo que indica que la búsqueda comienza desde el primer carácter de la cadena source.

  • Valor devuelto

    Devuelve un valor de tipo BIGINT. El valor devuelto sigue estas reglas:

    • Si no se encuentran coincidencias, devuelve 0.

    • Si source, pattern o start_position es NULL, devuelve NULL.

  • Ejemplos

    • Ejemplo 1: cuente las subcadenas coincidentes en abababc a partir de la posición indicada. Comandos de ejemplo:

      -- Returns 1.
      select regexp_count('abababc', 'a.c');
      -- Returns 2.
      select regexp_count('abababc', '[[:alpha:]]{2}', 3);
    • Ejemplo 2: uno de los parámetros de entrada es NULL. Comando de ejemplo:

      -- Returns NULL.
      select regexp_count('abababc', null);
    • Ejemplo 3: cuente las apariciones de : en la cadena JSON {"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}. Comando de ejemplo:

      -- Returns 4.
      select regexp_count('{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}',':');

REGEXP_EXTRACT

  • Sintaxis

    string regexp_extract(string <source>, string <pattern>[, bigint <groupid>])
    Nota

    En las versiones compatibles con los tipos de datos de Hive, REGEXP_EXTRACT sigue la especificación de expresiones regulares de Java. En las versiones de tipos de datos 1.0 y 2.0, sigue la especificación de MaxCompute.

  • Descripción

    Divide la cadena source en grupos mediante pattern y devuelve la cadena del grupo groupid.

  • Parámetros

    • source: obligatorio. Tipo STRING. Cadena que se va a dividir.

    • pattern: obligatorio. Constante STRING o expresión regular. Patrón que se va a buscar. Para obtener más lineamientos sobre expresiones regulares, consulte RLIKE string matching.

    • groupid: opcional. Constante BIGINT, debe ser ≥0.

    Nota

    Los datos se almacenan en formato UTF-8. Los caracteres chinos se pueden representar en hexadecimal dentro del rango [\\x{4e00},\\x{9fa5}].

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto sigue estas reglas:

    • Si pattern es una cadena vacía o no se especificó ningún grupo en pattern, se devuelve un error.

    • Si groupid no es de tipo BIGINT o es menor que 0, se devuelve un error. Si no especifica este parámetro, el valor predeterminado es 1, lo que indica que se devuelve la subcadena del primer grupo. Si establece groupid en 0, se devuelve la subcadena que coincide con todo el pattern.

    • Si source, pattern o groupid es NULL, devuelve NULL.

REGEXP_EXTRACT_ALL

  • Sintaxis

    array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>])
  • Descripción

    Busca todas las subcadenas que coinciden con un patrón de expresión regular dentro de una cadena y las devuelve como un arreglo.

  • Parámetros

    • source: obligatorio. Tipo STRING. La cadena que se va a analizar.

    • pattern: obligatorio. Tipo STRING. El patrón que se debe coincidir. Puede ser una constante STRING o una expresión regular. Para obtener más directrices sobre expresiones regulares, consulte RLIKE string matching.

    • group_id: opcional. Un valor BIGINT. Este parámetro especifica el ID del grupo que se usa para coincidir con el patrón. El valor de este parámetro debe ser mayor o igual que 0. Si no especifica este parámetro, se utiliza el grupo con un group_id de 1 para coincidir con el patrón. Si establece este parámetro en 0, el pattern se evalúa como un todo.

  • Valor devuelto

    Se devuelve un valor ARRAY. Si especifica group_id, se devuelve un arreglo que contiene todos los resultados coincidentes para el group_id indicado. Si no especifica group_id, se devuelve un arreglo con todos los resultados coincidentes para el group_id 1.

  • Ejemplo

    • Si no especifica group_id, el comportamiento predeterminado consiste en devolver los resultados que coinciden con el primer group_id.

      SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)');

      Devuelve:

      +------------+
      | _c0        |
      +------------+
      | [100,300] |
      +------------+
    • Si establece el valor de group_id en 2, se devuelve el resultado coincidente del segundo group_id.

      SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)',2);

      A continuación se muestra el resultado.

      +------------+
      | _c0        |
      +------------+
      | [200,400] |
      +------------+

REGEXP_INSTR

  • Sintaxis

    bigint regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])
  • Descripción

    Devuelve la posición inicial o final de la occurrence especificada de una subcadena que coincide con pattern dentro de source. La búsqueda comienza desde start_position.

  • Parámetros

    • source: obligatorio. La cadena de origen. El tipo de datos debe ser STRING.

    • pattern: obligatorio. El patrón que se debe coincidir. El valor puede ser una constante STRING o una expresión regular. Para obtener más información sobre expresiones regulares, consulte RLIKE string matching. Un pattern vacío devuelve un error.

    • start_position: opcional. La posición desde donde inicia la búsqueda. El valor debe ser una constante BIGINT. El valor predeterminado es 1.

    • occurrence: opcional. La aparición de la coincidencia que se desea buscar. El valor debe ser una constante BIGINT. El valor predeterminado es 1, lo cual indica la primera coincidencia.

    • return_option: opcional. La posición que se va a devolver. El valor debe ser una constante BIGINT. Valores válidos: 0 indica la posición inicial y 1 indica la posición final. El valor predeterminado es 0. Si especifica un valor no válido, se devuelve un error.

  • Valor devuelto

    El valor devuelto es de tipo BIGINT. El parámetro return_option determina si se devuelve la posición inicial o final de la subcadena coincidente en source. El valor devuelto se rige por las siguientes reglas:

    • Si pattern está vacío, se devuelve un error.

    • Si el valor de start_position o de occurrence no es una constante BIGINT, o bien es menor o igual que 0, se devuelve un error.

    • Si el valor de source, pattern, start_position, occurrence o return_option es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: devolver la posición inicial de la 2.ª aparición de una subcadena que coincide con o[[:alpha:]]{1} en la cadena i love www.taobao.com. La búsqueda comienza en la posición 3. Instrucción de ejemplo:

      -- Returns 14.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2);
    • Ejemplo 2: devolver la posición final de la second aparición de una subcadena que coincide con o[[:alpha:]]{1} en la cadena i love www.taobao.com. La búsqueda comienza en el third carácter. Instrucción de ejemplo:

      -- Returns 16.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1);
    • Ejemplo 3: un parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select regexp_instr('i love www.taobao.com', null, 3, 2);

REGEXP_REPLACE

  • Sintaxis

    string regexp_replace(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])
    Nota

    Para los tipos de datos compatibles con Hive, la función REGEXP_REPLACE sigue la especificación de expresiones regulares de Java. Para los tipos de datos 1.0 y 2.0, sigue la especificación de MaxCompute.

  • Descripción

    Reemplaza la subcadena que coincide con pattern en la posición indicada por occurrence dentro de la cadena source. Utiliza replace_string para el reemplazo y devuelve el resultado.

  • Parámetros

    • source: obligatorio. Un valor de tipo STRING. Es la cadena de origen que se va a modificar.

    • pattern: obligatorio. Una constante STRING o una expresión regular. Es el patrón que se debe coincidir. Para obtener más información sobre las reglas de expresiones regulares, consulte RLIKE string matching. Si pattern está vacío, se devuelve un error.

    • replace_string: obligatorio. Un valor de tipo STRING. Es la cadena que sustituye a la subcadena que coincide con pattern.

      Nota
      • Si replace_string es una cadena vacía, la función elimina la subcadena que coincide con pattern.

      • El parámetro replace_string admite referencias inversas con el formato \n. Estas permiten insertar la subcadena que coincide con el n-ésimo grupo de captura de pattern. El valor de n puede ser un número entero del 1 al 9. El valor \0 inserta toda la subcadena que coincide con pattern. Debe escapar las barras diagonales inversas (por ejemplo, \\1) o usar una cadena sin procesar (por ejemplo, R'(\1)').

    • occurrence: opcional. Una constante de tipo BIGINT que debe ser mayor o igual que 0. Este parámetro indica que la cadena coincidente con el patrón especificado, en la n-ésima aparición definida por occurrence, se reemplaza por replace_string. Si establece este parámetro en 0, se reemplazan todas las subcadenas que coinciden con el patrón. Si el valor pertenece a otro tipo de datos o es menor que 0, se devuelve un error. Valor predeterminado: 0.

  • Valor devuelto

    Se devuelve un valor de tipo STRING. El valor devuelto se rige por las siguientes reglas:

    • Si hace referencia a un grupo que no existe, el resultado queda indefinido.

    • Si replace_string es NULL y se encuentra una coincidencia para pattern, se devuelve NULL.

    • Si replace_string es NULL y pattern no coincide, la función devuelve la cadena original.

    • Si source, pattern o occurrence es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: reemplazar subcadenas según reglas específicas.

      -- Returns Abcd.
      select regexp_replace("abcd", "a", "A", 0);
      -- Returns bcd.
      select regexp_replace("abcd", "a", "", 0);
      -- Returns 19700101.
      select regexp_replace("1970-01-01", "-", "", 0);
      -- Returns abc.
      select regexp_replace("a1b2c3", "[0-9]", "", 0);
      -- Returns a1b2c.
      select regexp_replace("a1b2c3", "[0-9]", "", 3);
    • Ejemplo 2: reemplazar todas las coincidencias del patrón ([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4}) en la cadena 123.456.7890 por (\\1)\\2-\\3. Instrucción de ejemplo:

      -- Returns (123)456-7890.
      select regexp_replace('123.456.7890', '([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})',
      '(\\1)\\2-\\3', 0);
    • Ejemplo 3: reemplazar las subcadenas que coinciden con un patrón en la cadena abcd según reglas específicas. Instrucciones de ejemplo:

      -- Returns a b c d.
      select regexp_replace('abcd', '(.)', '\\1 ', 0);
      -- Returns a bcd.
      select regexp_replace('abcd', '(.)', '\\1 ', 1);
      -- Returns d.
      select regexp_replace("abcd", "(.*)(.)$", "\\2", 0);
    • Ejemplo 4: la tabla url_set contiene una columna URL cuyos valores tienen el formato www.simple@xxx.com. La parte xxx es única para cada fila. En este ejemplo se reemplazan todos los caracteres posteriores a www. Instrucción de ejemplo:

      -- Returns wwwtest.
      select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set;
    • Ejemplo 5: un parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select regexp_replace('abcd', '(.)', null, 0);
    • Ejemplo 6: hacer referencia a un grupo que no existe. Instrucciones de ejemplo:

      -- Pattern defines only one group; second group reference doesn't exist.
      -- Avoid this usage; result is undefined.
      regexp_replace("abcd", "(.)", "\\2", 0) = "" or "abcd"
      -- Pattern has no groups; \1 references non-existent group.
      -- Avoid this usage; result is undefined.
      regexp_replace("abcd", "a", "\\1", 0) = "bcd" or "abcd"

REGEXP_SUBSTR

  • Sintaxis

    string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])
  • Descripción

    Devuelve la subcadena de la cadena source que coincide con pattern por la occurrence-ésima vez. La búsqueda comienza desde start_position.

  • Parámetros

    • source: obligatorio. Tipo STRING. La cadena en la que se realiza la búsqueda.

    • pattern: obligatorio. Constante STRING o expresión regular. El patrón que se debe coincidir. La sintaxis de las expresiones regulares se describe en RLIKE string matching.

    • start_position: opcional. Constante BIGINT. El valor debe ser mayor que 0. Si no especifica este parámetro, el valor predeterminado es 1, lo cual indica que la búsqueda comienza en el primer carácter de la cadena source.

    • occurrence: opcional. Constante BIGINT. El valor debe ser mayor que 0. El valor predeterminado es 1, lo cual indica la primera coincidencia.

  • Valor devuelto

    Devuelve un valor STRING. El valor devuelto se rige por las siguientes reglas:

    • Si pattern está vacío, se produce un error.

    • Si no se encuentra ninguna coincidencia, se devuelve NULL.

    • Si start_position o occurrence no es de tipo BIGINT, o bien es menor o igual que 0, se produce un error.

    • Si source, pattern, start_position o occurrence es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: devolver la subcadena que coincide con el patrón especificado en I love aliyun very much. Instrucción de ejemplo:

      -- Returns aliyun.
      select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}');
      -- Returns have.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1);
      -- Returns 2.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2);
    • Ejemplo 2: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select regexp_substr('I love aliyun very much', null);

REPEAT

  • Sintaxis

    string repeat(string <str>, bigint <n>)
  • Descripción

    Devuelve la cadena str repetida n veces.

  • Parámetros

    • str: obligatorio. Tipo STRING. Si la entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING.

    • n: obligatorio. Tipo BIGINT. El tamaño del valor no debe superar los 2 MB.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto se rige por las siguientes reglas:

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, se devuelve un error.

    • Si n está vacío, se devuelve un error.

    • Si str o n es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: repetir la cadena abc 5 veces. Instrucción de ejemplo:

      -- Returns abcabcabcabcabc.
      select repeat('abc', 5); 
    • Ejemplo 2: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select repeat('abc', null);

REPLACE

  • Sintaxis

    string replace(string <str>, string <old>, string <new>)
  • Descripción

    Reemplaza todas las apariciones de old por new dentro de str y devuelve la cadena str modificada. Si no se encuentran coincidencias, se devuelve la cadena str original. Esta función es una extensión de MaxCompute V2.0.

  • Parámetros

    • str: obligatorio. Tipo STRING. La cadena de origen.

    • old: obligatorio. La cadena que se va a comparar.

    • new: obligatorio. Tipo STRING. La cadena de reemplazo.

  • Valor devuelto

    Devuelve un valor de tipo STRING. Si algún parámetro de entrada es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: reemplazar todas las apariciones de la subcadena abab por 12 en la cadena ababab. Instrucción de ejemplo:

      -- Returns 12ab.
      select replace('ababab','abab','12');
    • Ejemplo 2: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select replace('123abab456ab',null,'abab');

REVERSE

  • Sintaxis

    string reverse(string <str>)
  • Descripción

    Devuelve la cadena str en orden inverso.

  • Parámetros

    str: obligatorio. Un parámetro de tipo STRING. Si la entrada es un valor BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente al tipo STRING.

  • Valor devuelto

    Devuelve un valor de tipo STRING. Se aplican las siguientes reglas:

    • Si el tipo de datos de str no es STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, se devuelve un error.

    • Si str es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: invertir la cadena I love aliyun very much. Instrucción de ejemplo:

      -- Returns hcum yrev nuyila evol I.
      select reverse('I love aliyun very much');
    • Ejemplo 2: el parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select reverse(null);

RPAD

  • Sintaxis

    string rpad(string <str1>, int <length>, string <str2>)
  • Descripción

    Rellena la cadena str1 por la derecha hasta alcanzar length caracteres. Para ello, utiliza la cadena de relleno str2. Esta función es una extensión de MaxCompute V2.0.

  • Parámetros

    • str1: obligatorio. Tipo STRING. La cadena que se va a rellenar por la derecha.

    • length: obligatorio. Tipo INT. Debe ser mayor o igual que 0. Indica el número de caracteres del resultado tras aplicar el relleno.

    • str2 (obligatorio): la cadena que se usa para el relleno.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto se rige por las siguientes reglas:

    • Si length es menor que la longitud de str1, se devuelven los length caracteres más a la izquierda de str1.

    • Si length es 0, se devuelve una cadena vacía.

    • Si no hay parámetros de entrada o alguno de ellos es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: rellenar la cadena abcdefgh por la derecha hasta 10 caracteres mediante la cadena de relleno 12. Instrucción de ejemplo:

      -- Returns abcdefgh12.
      select rpad('abcdefgh', 10, '12');
    • Ejemplo 2: rellenar la cadena abcdefgh por la derecha hasta 5 caracteres mediante la cadena de relleno 12. Instrucción de ejemplo:

      -- Returns abcde.
      select rpad('abcdefgh', 5, '12');
    • Ejemplo 3: length es 0. Instrucción de ejemplo:

      -- Returns empty string.
      select rpad('abcdefgh' ,0, '12'); 
    • Ejemplo 4: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select rpad(null ,0, '12');

RTRIM

  • Sintaxis

    string rtrim(string <str>[, <trimChars>])
    string trim(trailing [<trimChars>] from <str>)
  • Descripción

    Elimina caracteres del extremo derecho de str:

    • Si no se especifica trimChars, se eliminan los espacios de forma predeterminada.

    • Si se especifica trimChars, los caracteres de trimChars se tratan como un conjunto. Se elimina la subcadena más larga del extremo derecho de str que esté compuesta exclusivamente por caracteres del conjunto trimChars.

  • Parámetros

    • str: obligatorio. Tipo STRING. La cadena a la que se le quitarán los caracteres. Si la entrada es BIGINT, DECIMAL, DOUBLE o DATETIME, se convierte implícitamente a STRING.

    • trimChars: opcional. Tipo STRING. Los caracteres que se van a eliminar.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El valor devuelto se rige por las siguientes reglas:

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, se devuelve un error.

    • Si str o trimChars es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: eliminar los espacios finales de la cadena yxTxyomxx . Instrucciones de ejemplo:

      -- Returns  yxTxyomxx.
      select rtrim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(trailing from ' yxTxyomxx ');
    • Ejemplo 2: eliminar todos los caracteres finales de la cadena yxTxyomxx que pertenezcan al conjunto xy.

      -- Returns yxTxyom. Any trailing x or y is removed.
      select rtrim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(trailing 'xy' from 'yxTxyomxx');
    • Ejemplo 3: el parámetro de entrada es NULL. Instrucciones de ejemplo:

      -- Returns NULL.
      select rtrim(null);
      select rtrim('yxTxyomxx', null);

SOUNDEX

  • Sintaxis

    string soundex(string <str>)
  • Descripción

    Convierte una cadena estándar en una cadena SOUNDEX.

  • Parámetros

    str: obligatorio. La cadena que se va a convertir. Este parámetro es de tipo STRING. Esta función es una extensión de MaxCompute V2.0.

  • Valor devuelto

    El valor devuelto es de tipo STRING. Si str es NULL, la función devuelve NULL.

  • Ejemplos

    • Ejemplo 1: convertir la cadena hello en una cadena SOUNDEX. Instrucción de ejemplo:

      -- Returns H400.
      select soundex('hello');
    • Ejemplo 2: el parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select soundex(null);

SPACE

  • Sintaxis

    string space(bigint <n>)
  • Descripción

    Genera una cadena formada por n espacios.

  • Parámetros

    n: obligatorio. Tipo BIGINT. El tamaño del valor no debe superar los 2 MB.

  • Valor devuelto

    Devuelve un valor STRING. El valor devuelto se rige por las siguientes reglas:

    • Si n está vacío, se devuelve un error.

    • Si n es NULL, se devuelve NULL.

  • Ejemplo

    -- Returns 10.
    select length(space(10));

SPLIT

  • Sintaxis

    ARRAY<STRING> SPLIT(STRING <source>, STRING <delimiter>[, BOOLEAN <trimTailEmpty>])
    
    -- Standard example.
    -- Returns ["a","b","c"].
    SELECT SPLIT('a,b,c', ',');
  • Parámetros

    • source: obligatorio. La cadena que se va a dividir. El tipo de datos es STRING.

    • delimiter: obligatorio. El separador que se usa para dividir la cadena. Este parámetro es compatible con regular expressions. El tipo de datos es STRING.

    • trimTailEmpty: opcional. Indica si se conservan las cadenas vacías finales. El valor predeterminado es true. Si establece este parámetro en false, se conservan las cadenas vacías finales. El tipo de datos es BOOLEAN.

  • Valor devuelto

    Devuelve un valor de tipo ARRAY<STRING>.

  • Ejemplo

    • Ejemplo 1: dividir una cadena mediante una coma.

      -- Returns ["a","b","c"].
      SELECT SPLIT('a,b,c', ',');
    • Ejemplo 2: manejar casos en los que el separador no existe.

      -- Returns ["a,b,c"].
      SELECT SPLIT('a,b,c', ':');
    • Ejemplo 3: manejar separadores consecutivos. Esto genera un elemento de cadena vacía.

      -- Returns ["a","","b"].
      SELECT SPLIT('a,,b', ',');
    • Ejemplo 4: usar un separador de varios caracteres.

      -- Returns ["a","b","c"].
      SELECT SPLIT('a::b::c', '::');
    • Ejemplo 5: conservar las cadenas vacías finales.

      -- By default, trailing empty strings are not returned.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a,b,c,,', ',');
      
      -- Return trailing empty strings.
      -- Returns ["a","b","c","",""].
      SELECT SPLIT('a,b,c,,', ',', false);
    • Ejemplo 6: usar un carácter de escape o un carácter especial como separador.

      -- Split by a line feed.
      -- Returns ["hello","world"].
      SELECT SPLIT('hello\nworld', '\n');  
      
      -- Split by a tab character.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a\tb\tc', '\t');  
      
      -- Split by a carriage return.
      -- Returns ["line1","line2"].
      SELECT SPLIT('line1\rline2', '\r');  
      
      -- Escape a backslash.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a\\b\\c', '\\\\');  
    • Ejemplo 7: manejar entradas NULL.

      -- If any parameter is NULL, the function returns NULL.
      -- Returns NULL.
      SELECT SPLIT(NULL, ',');
      
      -- Returns NULL.
      SELECT SPLIT('a,b,c', NULL);
      
      -- Returns NULL.
      SELECT SPLIT('a,b,c', ',', NULL);

SPLIT_PART

  • Sintaxis

    string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])
  • Descripción

    Divide la cadena str con el delimitador separator y devuelve la subcadena que va desde la parte start hasta end (intervalo cerrado).

  • Parámetros

    • str: obligatorio. Tipo STRING. La cadena que se va a dividir. Si el valor de entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING.

    • separator: obligatorio. Constante de tipo STRING. El delimitador (un solo carácter o una cadena).

    • start: obligatorio. Constante de tipo BIGINT, debe ser mayor que 0. Indica el número de la parte inicial (el conteo comienza en 1).

    • end: constante de tipo BIGINT mayor o igual que start. Este parámetro especifica el número del segmento final que se devolverá. Si no se especifica, su valor predeterminado es el de start, por lo que solo se devuelve el segmento indicado por start.

  • Descripción del valor devuelto

    Devuelve un valor de tipo STRING. El resultado se rige por las siguientes reglas:

    • Si start supera la cantidad real de partes (por ejemplo, hay 6 partes pero start > 6), se devuelve una cadena vacía.

    • Si separator no se encuentra en str y start = 1, se devuelve str completa. Si str está vacía, se devuelve una cadena vacía.

    • Si separator está vacío, se devuelve str original.

    • Si end supera la cantidad de partes, se devuelve la subcadena desde start hasta la última parte.

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, se devuelve un error.

    • Si separator no es una constante de tipo STRING, se devuelve un error.

    • Si start o end no es una constante de tipo BIGINT, se devuelve un error.

    • Si cualquier parámetro, excepto separator, es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: divida la cadena a,b,c,d con el delimitador , y devuelva las partes indicadas. Instrucciones de ejemplo:

      -- Returns a.
      select split_part('a,b,c,d', ',', 1);
      -- Returns a,b.
      select split_part('a,b,c,d', ',', 1, 2);
    • Ejemplo 2: start supera la cantidad real de partes. Instrucción de ejemplo:

      -- Returns empty string.
      select split_part('a,b,c,d', ',', 10);
    • Ejemplo 3: separator no se encuentra en str. Instrucciones de ejemplo:

      -- Returns a,b,c,d.
      select split_part('a,b,c,d', ':', 1);
      -- Returns empty string.
      select split_part('a,b,c,d', ':', 2);
    • Ejemplo 4: separator está vacío. Instrucción de ejemplo:

      -- Returns a,b,c,d.
      select split_part('a,b,c,d', '', 1);
    • Ejemplo 5: end supera la cantidad real de partes. Instrucción de ejemplo:

      -- Returns b,c,d.
      select split_part('a,b,c,d', ',', 2, 6);
    • Ejemplo 6: cualquier parámetro de entrada, excepto separator, es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select split_part('a,b,c,d', ',', null);

SUBSTR

  • Sintaxis

    string substr(string <str>, bigint <start_position>[, bigint <length>])
  • Descripción

    Devuelve una subcadena de str que comienza en start_position y tiene una longitud de length.

  • Parámetros

    • str: obligatorio. Tipo STRING. Si el valor de entrada es BIGINT, DECIMAL, DOUBLE o DATETIME, se convierte implícitamente a STRING.

    • start_position: obligatorio. Tipo BIGINT. La posición de inicio predeterminada es 1.

      • Versión de tipos de datos compatible con Hive: si start_position=0, el comportamiento es el mismo que en la posición 1.

      • Versiones de tipos de datos 1.0 y 2.0: si start_position=0, se devuelve NULL.

    • length: opcional. Tipo BIGINT. La longitud de la subcadena debe ser >0.

      Importante
      • Si setproject odps.function.strictmode=false: un valor length<0 devuelve un espacio en blanco.

      • Si setproject odps.function.strictmode=true: un valor length<0 devuelve un error.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El resultado se rige por las siguientes reglas:

    • Si str no es de tipo STRING, BIGINT, DECIMAL, DOUBLE o DATETIME, se devuelve un error.

    • Si length no es de tipo BIGINT o es ≤0, se devuelve un error.

    • Si omite length, la subcadena se extiende hasta el final de str.

    • Si str, start_position o length es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: devuelva una subcadena de abc desde la posición indicada y con la longitud especificada. Instrucciones de ejemplo:

      -- Returns bc.
      select substr('abc', 2);
      -- Returns b.
      select substr('abc', 2, 1);
      -- Returns bc.
      select substr('abc',-2 , 2);
    • Ejemplo 2: cuando un parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select substr('abc', null);

SUBSTRING

  • Sintaxis

    string substring(string|binary <str>, int <start_position>[, int <length>])
  • Descripción

    Devuelve una subcadena de str que comienza en start_position y tiene una longitud de length.

  • Parámetros

    • str: obligatorio. Este parámetro es de tipo STRING o BINARY.

    • start_position: obligatorio. Este parámetro es de tipo INT. La posición inicial comienza en 1. Si start_position es 0, se devuelve una cadena vacía. Si start_position es un valor negativo, la posición se cuenta hacia atrás desde el final de la cadena. En este caso, -1 corresponde al último carácter y el conteo continúa de forma secuencial hacia atrás.

    • length: opcional. Este parámetro es de tipo BIGINT. La longitud de la subcadena debe ser mayor que 0.

  • Valor devuelto

    El valor devuelto es de tipo STRING y cumple las siguientes reglas:

    • Si str no es de tipo STRING o BINARY, se devuelve un error.

    • Si length no es de tipo BIGINT o es menor o igual que 0, se devuelve un error.

    • Cuando se omite el parámetro length, se devuelve una subcadena hasta el final de str.

    • Si str, start_position o length es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: este ejemplo devuelve una subcadena de abc desde una posición específica y con una longitud determinada. Instrucciones de ejemplo:

      -- Returns bc.
      select substring('abc', 2);
      -- Returns b.
      select substring('abc', 2, 1);
      -- Returns bc.
      select substring('abc',-2,2);
      -- Returns ab.
      select substring('abc',-3,2);
      -- Returns 001.
      substring(bin(2345), 2, 3);
    • Ejemplo 2: este ejemplo muestra un caso en el que uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select substring('abc', null, null);

SUBSTRING_INDEX

  • Sintaxis

    string substring_index(string <str>, string <separator>, int <count>)
  • Descripción

    Esta función extrae una subcadena de str, ya sea antes o después de la aparición número count de un delimitador. Si count es positivo, la búsqueda del delimitador comienza desde la izquierda. Si count es negativo, la búsqueda comienza desde la derecha. Esta función es una extensión de MaxCompute V2.0.

  • Parámetros

    • str: obligatorio. Tipo STRING. Es la cadena de la que se extraerá la subcadena.

    • separator: obligatorio. Delimitador de tipo STRING.

    • count: obligatorio. Valor de tipo INT que indica la posición del separador.

  • Valor devuelto

    La función devuelve un valor de tipo STRING. Si algún parámetro de entrada es NULL, devuelve NULL.

  • Ejemplos

    • Ejemplo 1: extracción de la cadena https://www.alibabacloud.com. Instrucciones de ejemplo:

      -- Returns https://www.alibabacloud.
      select substring_index('https://www.alibabacloud.com', '.', 2);
      -- Returns alibabacloud.com.
      select substring_index('https://www.alibabacloud.com', '.', -2);
    • Ejemplo 2: un parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select substring_index('https://www.alibabacloud.com', null, 2);

TO_CHAR

  • Sintaxis

    string to_char(boolean <value>)
    string to_char(bigint <value>)
    string to_char(double <value>)
    string to_char(decimal <value>)
  • Descripción

    Convierte valores de tipo BOOLEAN, BIGINT, DECIMAL o DOUBLE a su representación en STRING.

  • Parámetros

    value: obligatorio. Un valor de tipo BOOLEAN, BIGINT, DECIMAL o DOUBLE.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El resultado se rige por las siguientes reglas:

    • Si value no es de tipo BOOLEAN, BIGINT, DECIMAL o DOUBLE, la función devuelve un error.

    • Si value es NULL, la función devuelve NULL.

  • Ejemplos

    • Ejemplo 1: convierta valores a su representación en STRING. Instrucción de ejemplo:

      -- Returns 123.
      select to_char(123);
      -- Returns TRUE.
      select to_char(true);
      -- Returns 1.23.
      select to_char(1.23);
    • Ejemplo 2: el parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select to_char(null);

TO_JSON

  • Sintaxis

    string to_json(<expr>)
  • Descripción

    Convierte una expresión de un tipo de dato complejo determinado, indicada por expr, en una cadena JSON.

  • Parámetros

    expr: obligatorio. Una expresión de tipo ARRAY, MAP o STRUCT.

    Nota

    Si la expresión de entrada es de tipo STRUCT (struct<key1:value1, key2:value2>), tenga en cuenta lo siguiente:

    • Todas las claves se convierten a minúsculas cuando la expresión se transforma en una cadena JSON.

    • Si un value es null, el par clave-valor al que pertenece dicho value no se incluye en la cadena JSON devuelta. Por ejemplo, si value2 es null, key2:value2 no se incluye en la cadena JSON resultante.

  • Valor devuelto

    Se devuelve una cadena JSON.

  • Ejemplos

    • Ejemplo 1: convierta una expresión de un tipo de dato complejo determinado en una cadena JSON. Instrucción de ejemplo:

      -- The return value is {"a":1,"b":2}. 
      select to_json(named_struct('a', 1, 'b', 2));
      -- The return value is {"time":"26/08/2015"}. 
      select to_json(named_struct('time', "26/08/2015"));
      -- The return value is [{"a":1,"b":2}]. 
      select to_json(array(named_struct('a', 1, 'b', 2)));
      -- The return value is {"a":{"b":1}}. 
      select to_json(map('a', named_struct('b', 1)));
      -- The return value is {"a":1}. 
      select to_json(map('a', 1));
      -- The return value is [{"a":1}]. 
      select to_json(array((map('a', 1))));
    • Ejemplo 2: la expresión de entrada es de tipo STRUCT. Instrucción de ejemplo:

      -- The return value is {"a":"B"}. If the expression of the STRUCT type is converted into a JSON string, all keys are converted into lowercase letters. 
      select to_json(named_struct("A", "B"));
      -- The return value is {"k2":"v2"}. The key-value pair to which null belongs is not included in the JSON string that is returned. 
      select to_json(named_struct("k1", cast(null as string), "k2", "v2"));

TOLOWER

  • Sintaxis

    string tolower(string <source>)
  • Descripción

    Convierte a minúsculas las letras mayúsculas del inglés en la cadena source.

  • Parámetros

    source: obligatorio. Un valor de tipo STRING. Si el valor de entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING. Esta función opera únicamente sobre caracteres del inglés.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El resultado se basa en las siguientes reglas:

    • Si el tipo de dato de source no es STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, se devuelve un error.

    • Si source es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: convierta letras mayúsculas a minúsculas. Instrucciones de ejemplo:

      -- Returns abcd.
      select tolower('aBcd');
    • Ejemplo 2: el parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select tolower(null);

TOUPPER

  • Sintaxis

    string toupper(string <source>)
  • Descripción

    Convierte a mayúsculas los caracteres en minúscula de la cadena source.

  • Parámetros

    source: obligatorio. Tipo STRING. Si el valor de entrada es BIGINT, DOUBLE, DECIMAL o DATETIME, se convierte implícitamente a STRING. Solo admite caracteres del inglés.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El resultado se basa en las siguientes reglas:

    • Si el tipo de dato de source no es STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, se devuelve un error.

    • Si source es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: convierta letras minúsculas a mayúsculas. Instrucciones de ejemplo:

      -- Returns ABCD.
      select toupper('aBcd');
    • Ejemplo 2: el parámetro de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select toupper(null);

TRANSLATE

  • Sintaxis

    string translate(string|varchar <str1>, string|varchar <str2>, string|varchar <str3>)
  • Descripción

    Reemplaza cada carácter de str1 que aparece en str2 por el carácter correspondiente de str3. Si no hay coincidencias, no se aplica ningún reemplazo. Esta función es una extensión de MaxCompute V2.0.

  • Valor devuelto

    Devuelve un valor de tipo STRING. Si algún parámetro de entrada es NULL, la función devuelve NULL.

  • Ejemplos

    • Ejemplo 1: reemplace cada carácter de ababab que aparezca en abab por el carácter correspondiente de cd. Instrucción de ejemplo:

      -- Returns cdcdcd.
      select translate('ababab','abab','cd');
    • Ejemplo 2: reemplace cada carácter de ababab que aparezca en abab por el carácter correspondiente de cdefg. Instrucción de ejemplo:

      -- Returns cdcdcd.
      select translate('ababab','abab','cdefg');
    • Ejemplo 3: uno de los parámetros de entrada es NULL. Instrucción de ejemplo:

      -- Returns NULL.
      select translate('ababab','cd',null);

TRIM

  • Sintaxis

    string trim(string <str>[,<trimChars>])
    string trim([BOTH] [<trimChars>] from <str>)
  • Descripción

    Elimina caracteres de ambos extremos de str:

    • Si no especifica trimChars, la función elimina los espacios de forma predeterminada.

    • Si especifica trimChars, la función trata los caracteres de trimChars como un conjunto. Luego, quita las subcadenas más largas posibles formadas exclusivamente por caracteres de ese conjunto, tanto del extremo izquierdo como del derecho de str.

  • Parámetros

    • str: obligatorio. Tipo STRING. La cadena a la que se le quitarán los caracteres. Si el valor de entrada es BIGINT, DECIMAL, DOUBLE o DATETIME, se convierte implícitamente a STRING.

    • trimChars: opcional. Tipo STRING. Los caracteres que se van a eliminar.

  • Valor devuelto

    Devuelve un valor de tipo STRING. El resultado se rige por las siguientes reglas:

    • Si str no es de tipo STRING, BIGINT, DOUBLE, DECIMAL o DATETIME, se devuelve un error.

    • Si str o trimChars es NULL, se devuelve NULL.

  • Ejemplos

    • Ejemplo 1: elimine los espacios de ambos extremos de la cadena yxTxyomxx . Instrucciones de ejemplo:

      -- Returns yxTxyomxx.
      select trim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(both from ' yxTxyomxx ');
      select trim(from ' yxTxyomxx ');
    • Ejemplo 2: elimine de ambos extremos de la cadena yxTxyomxx todos los caracteres que pertenezcan al conjunto xy.

      -- Returns Txyom. Any x or y on either end is removed.
      select trim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(both 'xy' from 'yxTxyomxx');
      select trim('xy' from 'yxTxyomxx');
    • Ejemplo 3: el parámetro de entrada es NULL. Instrucciones de ejemplo:

      -- Returns NULL.
      select trim(null);
      select trim('yxTxyomxx', null);

URL_DECODE

  • Sintaxis

    string url_decode(string <input>[, string <encoding>])
  • Descripción

    Convierte una cadena de entrada del formato application/x-www-form-urlencoded MIME a caracteres estándar. Esta función es la inversa de url_encode. Las reglas de codificación son las siguientes:

    • Los caracteres a–z y A–Z permanecen sin cambios.

    • El punto (.), el guion (-), el asterisco (*) y el guion bajo (_) permanecen sin cambios.

    • El signo más (+) se convierte en un espacio.

    • Las secuencias con formato %xy se convierten en valores de bytes. Los bytes consecutivos se decodifican en cadenas mediante el nombre de encoding especificado.

    • Todos los demás caracteres permanecen sin cambios.

  • Parámetros

    • input: este parámetro es obligatorio y de tipo STRING. Representa la cadena de entrada.

    • encoding: este parámetro es opcional y especifica el formato de codificación. Admite formatos como GBK y UTF-8. Si no se especifica, la codificación predeterminada es UTF-8.

  • Valor devuelto

    Esta función devuelve un valor de tipo STRING codificado en UTF-8. Si el parámetro input o encoding es NULL, la función devuelve NULL.

  • Ejemplo

    -- Returns examplefor url_decode:// (fdsf).
    select url_decode('%E7%A4%BA%E4%BE%8Bfor+url_decode%3A%2F%2F+%28fdsf%29');
    -- Returns Example for URL_DECODE:// dsf(fasfs).
    select url_decode('Example+for+url_decode+%3A%2F%2F+dsf%28fasfs%29', 'GBK');

URL_ENCODE

  • Sintaxis

    string url_encode(string <input>[, string <encoding>])
  • Descripción

    Codifica una cadena de entrada en formato application/x-www-form-urlencoded MIME. Reglas de codificación:

    • Las letras a–z y A–Z permanecen sin cambios.

    • El punto (.), el guion (-), el asterisco (*) y el guion bajo (_) permanecen sin cambios.

    • Los espacios se convierten en signos más (+).

    • Todos los demás caracteres se convierten en valores de bytes mediante el encoding especificado. Cada byte se representa como %xy, donde xy es la representación hexadecimal del carácter.

  • Parámetros

    • input: obligatorio. Tipo STRING. La cadena de entrada.

    • encoding: opcional. El formato de codificación. Los formatos compatibles incluyen GBK y UTF-8. Si no se especifica, el valor predeterminado es UTF-8.

  • Valor devuelto

    Devuelve un valor de tipo STRING. Si input o encoding es NULL, se devuelve NULL.

  • Ejemplo

    -- Returns %E7%A4%BA%E4%BE%8Bfor+url_encode%3A%2F%2F+%28fdsf%29.
    select url_encode('examplefor url_encode:// (fdsf)');
    -- Returns Example+for+url_encode+%3A%2F%2F+dsf%28fasfs%29.
    select url_encode('Example for url_encode:// dsf(fasfs)', 'GBK');

Referencias

Para ir más allá de las funciones integradas, cree funciones definidas por el usuario (UDF). Para obtener más información, consulte Overview.