Hologres admite las siguientes funciones de cadenas. Para consultar la lista completa de funciones de cadenas compatibles con PostgreSQL, consulte PostgreSQL Functions.
Índice de funciones
Concatenación, división y relleno de cadenas
|
Función |
Descripción |
||
|
STRING \|\| STRING[STRING |
STRING](#16163c209490i) |
Concatena dos cadenas. |
|
|
Concatena dos o más cadenas e ignora los argumentos NULL. |
|||
|
Concatena cadenas con un separador e ignora los argumentos de cadena NULL. |
|||
|
Agrega valores de columna en varias filas dentro de una sola cadena. Compatible con Oracle; requiere la extensión orafce. |
|||
|
Agrega valores de columna en varias filas dentro de una sola cadena. |
|||
|
Extrae caracteres desde el inicio de una cadena. |
|||
|
Extrae caracteres desde el final de una cadena. |
|||
|
Divide una cadena por un delimitador y devuelve el segmento n-ésimo. |
|||
|
Extrae una subcadena por posición o expresión regular. Alias: SUBSTR (forma compatible con Oracle). |
|||
|
Extrae una subcadena a partir de una posición inicial. Compatible con Oracle; requiere la extensión orafce. Alias: SUBSTRING. |
|||
|
Compara una cadena con una expresión regular y devuelve las coincidencias como un arreglo. |
|||
|
Divide una cadena mediante una expresión regular y devuelve cada segmento como una fila. |
|||
|
Divide una cadena mediante una expresión regular y devuelve los segmentos como un arreglo. |
|||
|
Elimina caracteres especificados de uno o ambos extremos de una cadena. |
|||
|
Elimina caracteres especificados de ambos extremos de una cadena. |
|||
|
Elimina caracteres especificados del extremo izquierdo (inicio) de una cadena. |
|||
|
Elimina caracteres especificados del extremo derecho (final) de una cadena. |
|||
|
Rellena una cadena por la izquierda hasta alcanzar una longitud especificada. |
|||
|
Rellena una cadena por la derecha hasta alcanzar una longitud especificada. |
Otras funciones de cadenas
|
Función |
Descripción |
|
Devuelve el código ASCII del primer carácter. |
|
|
Devuelve la longitud en caracteres de una cadena. Alias: LENGTH. |
|
|
Devuelve el número de caracteres en una cadena. Alias: CHAR_LENGTH. |
|
|
Devuelve el carácter correspondiente a un valor de código dado. |
|
|
Convierte a mayúscula la primera letra de cada palabra. |
|
|
Convierte una cadena a minúsculas. |
|
|
Convierte una cadena a mayúsculas. |
|
|
Devuelve el número de bytes en una cadena. |
|
|
Devuelve el hash MD5 de una cadena en formato hexadecimal. |
|
|
Devuelve la posición de una subcadena dentro de una cadena. Alias: STRPOS. |
|
|
Devuelve la posición de una subcadena dentro de una cadena. Alias: POSITION. |
|
|
Devuelve la posición de una subcadena dentro de un rango de una cadena. Compatible con Oracle; requiere la extensión orafce. |
|
|
Reemplaza todas las apariciones de una subcadena con otra cadena. |
|
|
Reemplaza subcadenas que coinciden con una expresión regular POSIX. |
|
|
Reemplaza caracteres individuales en una cadena. |
|
|
Repite una cadena un número especificado de veces. |
|
|
Devuelve verdadero si una cadena comienza con un prefijo especificado. |
|
|
Analiza sintácticamente una cadena de identificador SQL calificado. |
|
|
Devuelve una cadena entrecomillada como un identificador SQL válido. |
|
|
Devuelve una cadena entrecomillada como una constante de cadena SQL válida. |
|
|
Convierte un entero a su representación hexadecimal. |
|
|
Convierte una cadena a un tipo numérico. |
|
|
Invierte una cadena. Compatible con Oracle; requiere la extensión orafce. |
|
|
Devuelve el número de fila de la fila actual. Compatible con Hologres V1.3 y versiones posteriores. |
Concatenación, división y relleno de cadenas
STRING \|\| STRING
Concatena dos cadenas.
Sintaxis
<string_value1> TEXT || <string_value2> TEXT
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La primera expresión de cadena. |
|
|
Sí |
La segunda expresión de cadena. |
Tipo de retorno: TEXT
Ejemplo
-- Returns: HologreSQL
SELECT 'Holo' || 'greSQL';
CONCAT
Concatena dos o más cadenas en una sola. Los argumentos NULL se ignoran.
Sintaxis
CONCAT(<str1> TEXT, <str2> TEXT, ..., <strN> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
Las cadenas que se van a concatenar. Los valores NULL se ignoran. |
Tipo de retorno: TEXT
Ejemplo
SELECT CONCAT('abcde', 2, NULL, 22);
Resultado:
concat
--------
abcde222
CONCAT_WS
Concatena todos los argumentos después del primero y utiliza el primer argumento como separador.
Sintaxis
CONCAT_WS(<sep> TEXT, str "any" [, str "any" [, ...]])
El tipo any indica que se aceptan todos los tipos de datos.
Parámetros
Obligatorios:
sep: El separador que se inserta entre cada cadena. Si sep es NULL, la función devuelve NULL.
Opcionales:
str: Las cadenas que se van a concatenar. Los argumentos de cadena NULL se ignoran.
Tipo de retorno: TEXT
Ejemplo
SELECT CONCAT_WS(',', 'abcde', 2, NULL, 22);
Resultado:
concat_ws
----------
abcde,2,22
LISTAGG
Agrega valores de la misma columna en varias filas dentro de una sola cadena. Esta es una función compatible con Oracle que requiere la extensión orafce. Para obtener instrucciones de configuración, consulte Oracle-compatible functions.
Sintaxis
LISTAGG(<str1> TEXT [, <str2> TEXT])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La columna o expresión de cadena que se va a agregar. |
|
|
No |
El separador entre los valores agregados. Valor predeterminado: sin separador. |
Tipo de retorno: TEXT
Ejemplos
-- Returns: hologres
SELECT LISTAGG(t) FROM (VALUES('holo'), ('gres')) AS l(t);
-- Returns: holo.gres
SELECT LISTAGG(t, '.') FROM (VALUES('holo'), ('gres')) AS l(t);
STRING_AGG
Agrega valores de la misma columna en varias filas dentro de una sola cadena.
Sintaxis
STRING_AGG(expression [order_by_clause]) [FILTER (WHERE filter_clause)]
La cláusula FILTER es compatible con Hologres V1.3 y versiones posteriores. Para actualizar su instancia, consulte Upgrade an instance . Para obtener soporte técnico, únase al grupo de DingTalk de Hologres. Para ver las instrucciones, consulte How do I get more online support? .
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La columna o expresión que se va a agregar. |
|
|
No |
Define el orden de clasificación de los valores antes de la concatenación. Si se omite, no se garantiza el orden. |
|
|
No |
Filtra las filas incluidas en la agregación. |
Tipo de retorno: TEXT
Ejemplos
Ejemplo 1: Agregar todos los nombres de ciudades en una sola cadena.
CREATE TABLE city_test (
country text,
city text
);
INSERT INTO city_test
VALUES ('China', 'Shanghai'), ('China', 'Taiwan'), ('Japan', 'Tokyo'), ('France', 'Paris'), ('UK', 'London');
SELECT STRING_AGG(city, ',') FROM city_test;
Resultado:
string_agg
-------------------------------
Shanghai,Taiwan,Tokyo,Paris,London
Ejemplo 2: Agregar nombres donde student_id > 2.
CREATE TABLE name_text (
student_id int,
name text
);
INSERT INTO name_text
VALUES (1, 'Zhang San'), (2, 'Li Si'), (3, 'Wang Wu'), (4, 'Zhou Liu');
SELECT STRING_AGG(name, ',') FILTER (WHERE student_id > 2) FROM name_text;
Resultado:
string_agg
-----------
Wang Wu,Zhou Liu
LEFT
Extrae un número especificado de caracteres desde el inicio de una cadena.
Sintaxis
LEFT(<str> TEXT, <num> INT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
El número de caracteres que se van a extraer. Si es negativo, devuelve todos los caracteres excepto los últimos |
Tipo de retorno: TEXT
Ejemplo
SELECT LEFT('hologres', 4);
Resultado:
left
----
holo
RIGHT
Extrae un número especificado de caracteres desde el final de una cadena.
Sintaxis
RIGHT(<str> TEXT, <num> INT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
El número de caracteres que se van a extraer. Si es negativo, devuelve todos los caracteres excepto los primeros |
Tipo de retorno: TEXT
Ejemplo
SELECT RIGHT('hologres', 4);
Resultado:
right
-----
gres
SPLIT_PART
Divide una cadena por un delimitador y devuelve el segmento n-ésimo.
Sintaxis
SPLIT_PART(<str> TEXT, <delimiter> TEXT, <num> INT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino que se va a dividir. |
|
|
Sí |
El delimitador utilizado para la división. |
|
|
Sí |
El índice basado en 1 del segmento que se va a devolver. |
Tipo de retorno: TEXT
Notas de uso
Si
numes mayor que el número de segmentos, la función devuelve NULL.
Ejemplo
CREATE TABLE split_part_test (
a text
);
INSERT INTO split_part_test VALUES ('a/b/c/d/e'), ('a1/b1/c1/d1/e1');
SELECT split_part(a, '/', 2) FROM split_part_test;
Resultado:
split_part
----------
b
b1
SUBSTRING
Extrae una subcadena de una cadena de destino. Admite tres formas: basada en posición, expresión regular POSIX y expresión regular SQL.
Sintaxis
Basada en posición:
SUBSTRING(<str> TEXT [FROM <num_start> INT] [FOR <num_end> INT])
Expresión regular POSIX:
SUBSTRING(<str> TEXT FROM <pattern> TEXT)
Expresión regular SQL:
SUBSTRING(<str> TEXT FROM <pattern> TEXT FOR <escape> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
No |
La posición inicial (basada en 1). Valor predeterminado: 1. |
|
|
No |
El número de caracteres que se van a extraer. Valor predeterminado: hasta el final de la cadena. |
|
|
Sí (formas regex) |
La expresión regular con la que se busca coincidencia. |
|
|
Sí (regex SQL) |
El carácter de escape para caracteres especiales como |
Tipo de retorno: TEXT
Ejemplos
Ejemplo 1: Extraer una subcadena por posición.
SELECT SUBSTRING('Thomas' FROM 2 FOR 3);
Resultado:
substring
---------
hom
Ejemplo 2: Extraer una subcadena que coincide con una expresión regular POSIX.
SELECT SUBSTRING('Thomas' FROM '...$');
Resultado:
substring
---------
mas
Ejemplo 3: Extraer una subcadena que coincide con una expresión regular SQL.
SELECT SUBSTRING('Thomas' FROM '%#"o_a#"_' FOR '#');
Resultado:
substring
---------
oma
SUBSTR
Extrae una subcadena a partir de una posición inicial. Esta es una función compatible con Oracle que requiere la extensión orafce. Para obtener instrucciones de configuración, consulte Oracle-compatible functions.
Sintaxis
Extraer desde una posición inicial hasta el final:
SUBSTR(<str> TEXT, <num_start> INTEGER)
Extraer una subcadena de longitud fija:
SUBSTR(<str> TEXT, <num_start> INTEGER, <len> INTEGER)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
La posición inicial (basada en 1). |
|
|
No |
El número de caracteres que se van a extraer. Valor predeterminado: hasta el final de la cadena. |
Tipo de retorno: TEXT
Ejemplos
Ejemplo 1: Extraer desde el cuarto carácter hasta el final.
-- Returns: ogres
SELECT SUBSTR('Hologres', 4);
Ejemplo 2: Extraer cinco caracteres a partir del segundo carácter.
-- Returns: ologr
SELECT SUBSTR('Hologres', 2, 5);
REGEXP_MATCH
Compara una cadena con una expresión regular y devuelve las coincidencias como un arreglo.
Sintaxis
REGEXP_MATCH(<str> TEXT, <pattern> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a comparar. |
|
|
Sí |
La expresión regular. |
Tipo de retorno: ARRAY
Ejemplo
SELECT regexp_match('foobarbequebaz', '(bar)(beque)');
Resultado:
regexp_match
------------
{bar,beque}
REGEXP_SPLIT_TO_TABLE
Divide una cadena mediante una expresión regular y devuelve cada segmento como una fila independiente. Utilice esta función para expandir valores delimitados en filas.
Sintaxis
REGEXP_SPLIT_TO_TABLE(<str> TEXT, <pattern> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a dividir. |
|
|
Sí |
La expresión regular que identifica las posiciones de división. |
Tipo de retorno: TEXT (una fila por segmento)
Ejemplo
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_TABLE(intrests, ',') FROM interests_test;
Resultado:
name | regexp_split_to_table
----------+----------------------
Zhang San | singing
Zhang San | dancing
Li Si | soccer
Li Si | running
Li Si | drawing
Wang Wu | flower arranging
Wang Wu | calligraphy
Wang Wu | playing piano
Wang Wu | sleeping
REGEXP_SPLIT_TO_ARRAY
Divide una cadena mediante una expresión regular y devuelve los segmentos como un arreglo.
Sintaxis
REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a dividir. |
|
|
Sí |
La expresión regular que identifica las posiciones de división. |
Tipo de retorno: ARRAY
Ejemplo
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_ARRAY(intrests, ',') FROM interests_test;
Resultado:
name | regexp_split_to_array
----------+----------------------------------------------------------
Zhang San | {singing,dancing}
Li Si | {soccer,running,drawing}
Wang Wu | {"flower arranging",calligraphy,"playing piano",sleeping}
TRIM
Elimina caracteres especificados de uno o ambos extremos de una cadena.
Sintaxis
TRIM([LEADING | TRAILING | BOTH] [<characters> TEXT] FROM <string> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
||
|
|
TRAILING |
BOTH` |
No |
Los extremos que se van a recortar. Valor predeterminado: |
|
|
No |
El conjunto de caracteres que se van a eliminar. Cada carácter se compara individualmente, no como una cadena completa. Valor predeterminado: espacio. |
||
|
|
Sí |
La cadena de destino. |
Tipo de retorno: TEXT
Ejemplo
-- Returns: Tom
SELECT TRIM(BOTH 'xyz' FROM 'yxTomxx');
BTRIM
Elimina caracteres especificados de ambos extremos de una cadena.
Sintaxis
BTRIM(<str> TEXT [, <characters> TEXT])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
No |
El conjunto de caracteres que se van a eliminar de ambos extremos. Cada carácter se compara individualmente, no como una cadena completa. Valor predeterminado: espacio. |
Tipo de retorno: TEXT
Ejemplo
-- Returns: trim
SELECT BTRIM('xyxtrimyyx', 'xyz');
LTRIM
Elimina caracteres especificados del extremo izquierdo (inicio) de una cadena.
Sintaxis
LTRIM(<str> TEXT [, <characters> TEXT])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
No |
El conjunto de caracteres que se van a eliminar de la izquierda. Cada carácter se compara individualmente, no como una cadena completa. Valor predeterminado: espacio. |
Tipo de retorno: TEXT
Ejemplo
-- Returns: test
SELECT LTRIM('zzzytest', 'xyz');
RTRIM
Elimina caracteres especificados del extremo derecho (final) de una cadena.
Sintaxis
RTRIM(<str> TEXT [, <characters> TEXT])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
No |
El conjunto de caracteres que se van a eliminar de la derecha. Cada carácter se compara individualmente, no como una cadena completa. Valor predeterminado: espacio. |
Tipo de retorno: TEXT
Ejemplo
-- Returns: test
SELECT RTRIM('testxxzx', 'xyz');
Cuando un valor DECIMAL se convierte a TEXT, el resultado conserva los ceros finales definidos por su escala; por ejemplo, 2.00 en lugar de 2. Una sola llamada a RTRIM que elimina únicamente los ceros deja el punto decimal:
-- Returns: 2.
SELECT RTRIM(2.00::DECIMAL::TEXT, '0');
Para eliminar tanto los ceros finales como el punto decimal, anide dos llamadas a RTRIM: la primera llamada elimina los ceros y la segunda elimina el punto decimal.
-- Returns: 2
SELECT RTRIM(RTRIM(2.00::DECIMAL::TEXT, '0'), '.');
La siguiente tabla compara los resultados de las dos expresiones para diferentes valores en una columna DECIMAL(10,2) llamada a:
|
Valor |
RTRIM(a::TEXT, '0') |
RTRIM(RTRIM(a::TEXT, '0'), '.') |
|
0.00 |
0. |
0 |
|
1.10 |
1.1 |
1.1 |
|
2.00 |
2. |
2 |
|
3.50 |
3.5 |
3.5 |
|
10.00 |
10. |
10 |
LPAD
Rellena una cadena por la izquierda con un carácter de relleno hasta alcanzar una longitud total especificada.
Sintaxis
LPAD(<str> TEXT, <length> INT [, <fill> TEXT])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
La longitud total del resultado. Si |
|
|
No |
El carácter de relleno. Valor predeterminado: espacio. |
Tipo de retorno: TEXT
Ejemplo
-- Returns: xyxhi
SELECT LPAD('hi', 5, 'xy');
RPAD
Rellena una cadena por la derecha con un carácter de relleno hasta alcanzar una longitud total especificada.
Sintaxis
RPAD(<str> TEXT, <length> INT [, <fill> TEXT])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
La longitud total del resultado. Si |
|
|
No |
El carácter de relleno. Valor predeterminado: espacio. |
Tipo de retorno: TEXT
Ejemplo
-- Returns: hixyx
SELECT RPAD('hi', 5, 'xy');
Otras funciones de cadenas
ASCII
Devuelve el código ASCII del primer carácter de una cadena.
Sintaxis
ASCII(<str> TEXT)
Tipo de retorno: INTEGER
Ejemplo
-- Returns: 120
SELECT ASCII('x');
CHAR_LENGTH
Devuelve el número de caracteres en una cadena. Equivalente a LENGTH.
Sintaxis
CHAR_LENGTH(<str> TEXT)
Tipo de retorno: INTEGER
Ejemplo
-- Returns: 4
SELECT CHAR_LENGTH('jose');
LENGTH
Devuelve el número de caracteres en una cadena. En la codificación UTF-8, cada carácter chino, dígito o letra cuenta como un carácter. Equivalente a CHAR_LENGTH.
Sintaxis
LENGTH(<str> TEXT)
Tipo de retorno: INTEGER
Ejemplo
-- Returns: 4
SELECT LENGTH('jose');
CHR
Devuelve el carácter correspondiente a un valor de código ASCII o Unicode dado.
Sintaxis
CHR(<num> INT)
Tipo de retorno: TEXT
Ejemplo
-- Returns: A
SELECT CHR(65);
INITCAP
Convierte la primera letra de cada palabra a mayúscula y el resto a minúsculas. Las palabras son secuencias de caracteres alfanuméricos separadas por caracteres no alfanuméricos.
Sintaxis
INITCAP(<str> TEXT)
Tipo de retorno: TEXT
Ejemplo
-- Returns: Hi Thomas
SELECT INITCAP('hi THOMAS');
LOWER
Convierte una cadena a minúsculas.
Sintaxis
LOWER(<str> TEXT)
Tipo de retorno: TEXT
Ejemplo
-- Returns: tom
SELECT LOWER('TOM');
UPPER
Convierte una cadena a mayúsculas.
Sintaxis
UPPER(<str> TEXT)
Tipo de retorno: TEXT
Ejemplo
-- Returns: TOM
SELECT UPPER('tom');
OCTET_LENGTH
Devuelve el número de bytes en una cadena.
Sintaxis
OCTET_LENGTH(<str> TEXT)
Tipo de retorno: INTEGER
Ejemplo
-- Returns: 4
SELECT OCTET_LENGTH('jose');
MD5
Calcula el hash MD5 de una cadena y devuelve el resultado como una cadena hexadecimal.
Sintaxis
MD5(<str> TEXT)
Tipo de retorno: TEXT
Ejemplo
-- Returns: 900150983cd24fb0d6963f7d28e17f72
SELECT MD5('abc');
POSITION
Devuelve la posición inicial de una subcadena dentro de una cadena. Devuelve 0 si no se encuentra la subcadena. Equivalente a STRPOS.
Sintaxis
POSITION(<substr> TEXT IN <str> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La subcadena que se va a buscar. |
|
|
Sí |
La cadena de destino. |
Tipo de retorno: INTEGER
Ejemplo
-- Returns: 3
SELECT POSITION('om' IN 'Thomas');
STRPOS
Devuelve la posición inicial de una subcadena dentro de una cadena. Devuelve 0 si no se encuentra la subcadena. Equivalente a POSITION.
Sintaxis
STRPOS(<str> TEXT, <substr> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
La subcadena que se va a buscar. |
Tipo de retorno: INTEGER
Ejemplo
-- Returns: 2
SELECT STRPOS('high', 'ig');
INSTR
Devuelve la posición de una subcadena dentro de una cadena de destino, con control opcional de la posición inicial y la aparición. Devuelve 0 si no se encuentra la subcadena. Esta es una función compatible con Oracle que requiere la extensión orafce. Para obtener instrucciones de configuración, consulte Oracle-compatible functions.
Sintaxis
INSTR(<str> TEXT, <patt> TEXT [, <start> INTEGER [, <nth> INTEGER]])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
La subcadena que se va a buscar. |
|
|
No |
La posición desde la cual comenzar la búsqueda. Valor predeterminado: 1 (inicio de la cadena). |
|
|
No |
La aparición que se va a buscar. Valor predeterminado: 1 (primera aparición). |
Tipo de retorno: INTEGER
Ejemplos
-- Returns: 4 (second occurrence of 'o', searching from position 1)
SELECT INSTR('Hologres', 'o', 1, 2);
-- Returns: 2 (first occurrence of 'o', searching from position 1)
SELECT INSTR('Hologres', 'o', 1, 1);
-- Returns: 4 (first occurrence of 'o' at or after position 4)
SELECT INSTR('Hologres', 'o', 4);
-- Returns: 2 (first occurrence of 'o')
SELECT INSTR('Hologres', 'o');
REPLACE
Reemplaza todas las apariciones de una subcadena dentro de una cadena.
Sintaxis
REPLACE(<str> TEXT, <old_str> TEXT, <new_str> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
La subcadena que se va a reemplazar. |
|
|
Sí |
La cadena de reemplazo. |
Tipo de retorno: TEXT
Ejemplo
CREATE TABLE animal_test (
animal text,
color text
);
INSERT INTO animal_test
VALUES ('dog', 'white'), ('cat', 'white'), ('tiger', 'yellow');
SELECT animal, REPLACE(color, 'white', 'multi-colored') FROM animal_test;
Resultado:
animal | replace
-------+--------------
dog | multi-colored
cat | multi-colored
tiger | yellow
REGEXP_REPLACE
Reemplaza subcadenas que coinciden con una expresión regular POSIX por una cadena de reemplazo.
Sintaxis
REGEXP_REPLACE(<str> TEXT, <regex> TEXT, <replacement> TEXT [, <flags> TEXT])
Parámetros
Obligatorios:
|
Parámetro |
Descripción |
|
|
La cadena de destino. |
|
|
La expresión regular POSIX con la que se busca coincidencia. |
|
|
La cadena de reemplazo. |
Opcionales:
flags: Uno o más caracteres que controlan el comportamiento de coincidencia. Valor predeterminado: reemplaza solo la primera coincidencia, distingue entre mayúsculas y minúsculas.
|
Marca |
Descripción |
|
|
Reemplaza todas las apariciones (el valor predeterminado reemplaza solo la primera). |
|
|
Coincidencia sin distinción entre mayúsculas y minúsculas. |
|
|
Modo multilínea. |
|
|
Modo de línea única: |
Tipo de retorno: TEXT
Ejemplo
CREATE TABLE a_test (
a text
);
INSERT INTO a_test VALUES ('Abcd1234abCd');
SELECT REGEXP_REPLACE(a, '1234.', '77', 'ig') FROM a_test;
Resultado:
regexp_replace
--------------
Abcd77bCd
TRANSLATE
Reemplaza caracteres individuales en una cadena según un mapeo de caracteres.
Sintaxis
TRANSLATE(<str> TEXT, <substr> TEXT, <newstr> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
El conjunto de caracteres que se van a reemplazar. |
|
|
Sí |
Los caracteres de reemplazo, mapeados posicionalmente a |
Tipo de retorno: TEXT
Ejemplo
-- Returns: a2x5
SELECT TRANSLATE('12345', '143', 'ax');
REPEAT
Repite una cadena un número especificado de veces.
Sintaxis
REPEAT(<str> TEXT, <number> INT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a repetir. |
|
|
Sí |
El número de repeticiones. |
Tipo de retorno: TEXT
Ejemplo
-- Returns: PgPgPgPg
SELECT REPEAT('Pg', 4);
STARTS_WITH
Devuelve verdadero si una cadena comienza con un prefijo especificado.
Sintaxis
STARTS_WITH(<str> TEXT, <prefix> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
Sí |
El prefijo que se va a comprobar. |
Tipo de retorno: BOOLEAN (t para verdadero, f para falso)
Ejemplo
-- Returns: t
SELECT STARTS_WITH('alphabet', 'alph');
PARSE_IDENT
Analiza sintácticamente una cadena de identificador SQL calificado y devuelve sus componentes como un arreglo. Los componentes sin comillas se convierten a minúsculas; los componentes entre comillas conservan su formato original.
Sintaxis
PARSE_IDENT(<quali_iden> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
Un identificador SQL calificado, como un nombre de tabla totalmente calificado. |
Tipo de retorno: TEXT (formato de arreglo)
Ejemplo
-- Returns: {"SomeSchema","sometable"}
SELECT PARSE_IDENT('"SomeSchema".someTable');
QUOTE_IDENT
Devuelve la cadena entrecomillada como un identificador SQL válido y agrega comillas dobles cuando es necesario (por ejemplo, cuando la cadena contiene espacios o letras mayúsculas que, de otro modo, se convertirían a minúsculas).
Sintaxis
QUOTE_IDENT(<str> TEXT)
Tipo de retorno: TEXT
Ejemplo
-- Returns: "Foo bar"
SELECT QUOTE_IDENT('Foo bar');
QUOTE_LITERAL
Devuelve la cadena entrecomillada como una constante de cadena SQL válida y escapa las comillas simples según sea necesario.
Sintaxis
QUOTE_LITERAL(<str> TEXT)
Tipo de retorno: TEXT
Ejemplo
-- Returns: 'O''Reilly'
SELECT QUOTE_LITERAL(E'O\'Reilly');
TO_HEX
Convierte un entero a su representación en cadena hexadecimal.
Sintaxis
TO_HEX(<number> INT | BIGINT)
Tipo de retorno: TEXT
Ejemplo
-- Returns: 7fffffff
SELECT TO_HEX(2147483647);
TO_NUMBER
Convierte una cadena con formato a un valor numérico mediante un modelo de formato.
Sintaxis
TO_NUMBER(<str1> TEXT, <str2> TEXT)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a convertir. |
|
|
Sí |
El modelo de formato que define cómo analizar sintácticamente la cadena. |
Tipo de retorno: NUMERIC
Ejemplo
-- Returns: -12454.8
SELECT TO_NUMBER('12,454.8-', '99G999D9S');
PLVSTR.RVRS
Invierte total o parcialmente una cadena. Esta función es compatible con Oracle y requiere la extensión orafce. Para consultar las instrucciones de configuración, consulte Oracle-compatible functions.
Sintaxis
Invertir toda la cadena:
PLVSTR.RVRS(<str> TEXT)
Invertir desde una posición inicial hasta el final:
PLVSTR.RVRS(<str> TEXT, <start> INTEGER)
Invertir un rango específico:
PLVSTR.RVRS(<str> TEXT, <start> INTEGER, <end> INTEGER)
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de destino. |
|
|
No |
La posición inicial del rango que se va a invertir (base 1). Valor predeterminado: 1. |
|
|
No |
La posición final del rango que se va a invertir. Valor predeterminado: final de la cadena. |
Tipo de retorno: TEXT
Ejemplos
-- Returns: sergoloH (entire string reversed)
SELECT PLVSTR.RVRS('Hologres');
-- Returns: sergo (reversed from position 4 to end)
SELECT PLVSTR.RVRS('Hologres', 4);
-- Returns: rg (positions 5-6 reversed)
SELECT PLVSTR.RVRS('Hologres', 5, 6);
ROW
Devuelve el número de fila de la fila actual. Es compatible con Hologres V1.3 y versiones posteriores.
Para actualizar su instancia a la versión V1.3 o posterior, consulte Upgrade an instance . Para obtener soporte técnico, únase al grupo de DingTalk de Hologres. Para consultar las instrucciones, consulte How do I get more online support? .
Sintaxis
ROW(<val1>, <val2>, ...)
Tipo de retorno: ARRAY o TEXT
Ejemplo
A continuación se muestra un ejemplo que devuelve las filas donde la columna a y la columna b tienen valores iguales.
CREATE TABLE row_test (
a text,
b text
);
INSERT INTO row_test VALUES ('0', '0'), ('1', '0');
SELECT a, b FROM row_test WHERE ROW(a, b) = ROW(b, a);
Resultado:
a | b
--+--
0 | 0