Funciones de cadena

En CLEM, puede realizar las siguientes operaciones con cadenas:

  • Comparar cadenas
  • Crear cadenas
  • Acceder a caracteres

En CLEM, una cadena es cualquier secuencia de caracteres que se encuentre entre un par de comillas dobles ("comillas de cadena"). Los caracteres (CAR) pueden ser cualquier carácter alfanumérico simple. Se declaran en expresiones CLEM utilizando comillas inversas simples del tipo `<carácter>`, como por ejemplo `z`, `A` o `2`. Los caracteres que se encuentran fuera de los límites o los índices negativos de una cadena darán como resultado un comportamiento indefinido.

Nota: Las comparaciones entre cadenas que utilizan y no utilizan retrotracción SQL pueden generar diferentes resultados donde existen espacios finales.
Tabla 1. Funciones de cadena de CLEM
Función Resultado Descripción
allbutfirst(N, CADENA) Cadena Devuelve una cadena, que es CADENA sin los N primeros caracteres.
allbutlast(N, CADENA) Cadena Devuelve una cadena, que es CADENA sin los últimos caracteres.
alphabefore(CADENA1, CADENA2) Booleana Se utiliza para comprobar el orden alfabético de las cadenas. Devuelve verdadero si CADENA1 precede a CADENA2.
endstring(LONGITUD, CADENA) Cadena Extrae los últimos N caracteres de la cadena especificada. Si la longitud de la cadena es menor o igual que la longitud especificada, no hay cambios.
hasendstring(CADENA, SUBCADENA) Entero Esta función es la misma que isendstring(SUBCADENA, CADENA).
hasmidstring(CADENA, SUBCADENA) Entero Esta función es la misma que ismidstring(SUBCADENA, CADENA) (subcadena incrustada).
hasstartstring(CADENA, SUBCADENA) Entero Esta función es la misma que isstartstring(SUBCADENA, CADENA).
hassubstring(CADENA, N, SUBCADENA) Entero Esta función es la misma que issubstring(SUBCADENA, N, CADENA) donde, de forma predeterminada, N tiene el valor 1.
count_substring(CADENA, SUBCADENA) Entero Devuelve el número de veces que aparece la subcadena especificada en la cadena. Por ejemplo: count_substring("foooo.txt", "oo") devuelve 3.
hassubstring(CADENA, SUBCADENA) Entero Esta función es la misma que issubstring(SUBCADENA, 1, CADENA) donde N tiene el valor 1 de forma predeterminada.
isalphacode(CAR) Booleana Devuelve verdadero si CAR es un carácter en la cadena especificada (normalmente un nombre de campo) cuyo código de carácter es una letra. De lo contrario, esta función devuelve 0. Por ejemplo, isalphacode(producir_núm(1)).
isendstring(SUBCADENA, CADENA) Entero Si la cadena CADENA finaliza con la subcadena SUBCADENA, esta función devuelve el subíndice entero de SUBCADENA en CADENA. En el resto de los casos, esta función devuelve 0.
islowercode(CAR) Booleana Devuelve verdadero si CAR es un carácter de una letra minúscula para la cadena especificada (normalmente un nombre de campo). En el resto de los casos, esta función devuelve 0. Por ejemplo, islowercode(``) y islowercode(nombre_país(2)) son ambas expresiones válidas.
ismidstring(SUBCADENA, CADENA) Entero Si SUBCADENA es una subcadena de CADENA pero no comienza en el primer carácter de CADENA ni termina en el último, esta función devuelve el subíndice donde dicha subcadena comienza. En el resto de los casos, esta función devuelve 0.
isnumbercode(CAR) Booleana Devuelve verdadero si CAR, para la cadena especificada (normalmente un nombre de campo), es un carácter cuyo código de carácter es un número. De lo contrario, esta función devuelve un valor de 0. Por ejemplo, isnumbercode(product_id(2)).
isstartstring(SUBCADENA, CADENA) Entero Si la cadena CADENA comienza con la subcadena SUBCADENA, esta función devuelve el subíndice 1. En el resto de los casos, esta función devuelve un valor de 0.
issubstring(SUBCADENA, N, CADENA) Entero Busca la cadena CADENA, a partir del carácter número N, para una subcadena igual a la cadena SUBCADENA. Si la encuentra, esta función devuelve el subíndice entero donde comienza el subcadena coincidente. En el resto de los casos, esta función devuelve 0. Si no se proporciona N, esta función toma el valor 1 de forma predeterminada.
issubstring(SUBCADENA, CADENA) Entero Busca la cadena CADENA, a partir del carácter número N, para una subcadena igual a la cadena SUBCADENA. Si la encuentra, esta función devuelve el subíndice entero donde comienza el subcadena coincidente. En el resto de los casos, esta función devuelve 0. Si no se proporciona N, esta función toma el valor 1 de forma predeterminada.
issubstring_count(SUBCADENA, N, CADENA) Entero Devuelve el índice de la instancia número N de la SUBCADENA en la CADENA especificada. Si hay menos de N instancias de SUBCADENA, se devuelve 0.
issubstring_lim(SUBCADENA, N, LÍMINICIAL, LÍMFINAL, CADENA) Entero Esta función es la misma que issubstring, pero la coincidencia se limita de manera que se inicia en el subíndice LÍMINICIAL (o antes) y finaliza en el subíndice LÍMFINAL (o antes). Las restricciones STARTLIM o ENDLIM se pueden desactivar proporcionando un valor de falso para cada argumento, por ejemplo, issubstring_lim(SUBSTRING, N, falso, falso, STRING) es lo mismo que issubstring.
isuppercode(CAR) Booleana Devuelve verdadero si CAR es un carácter de una letra mayúscula. En el resto de los casos, esta función devuelve 0. Por ejemplo, isuppercode(``) y isuppercode(nombre_país(2)) son ambas expresiones válidas.
last(CAR) Cadena Devuelve el último carácter CAR de CADENA (que debe tener una longitud de al menos un carácter).
length(CADENA) Entero Devuelve la longitud de la cadena CADENA; es decir el número de caracteres que hay en ella.
locchar(CAR, N, CADENA) Entero Se utiliza para identificar la ubicación de los caracteres en los campos simbólicos. La función busca en la cadena CADENA el carácter CAR, comenzando la búsqueda en el carácter número N de la CADENA. Esta función devuelve un valor que indica la ubicación (comenzando por N) en la que se encuentra el carácter. Si no se encuentra el carácter, esta función devuelve 0. Si la función tiene un desplazamiento no válido (N) (por ejemplo, un desplazamiento que supera la longitud de la cadena), esta función devuelve $null$. Por ejemplo, locchar(`n`, 2, página_web) busca el carácter `n` en el campo con el nombre página_web, comenzando a partir del segundo carácter del valor del campo. Nota: Asegúrese de utilizar comillas inversas simples para entrecomillar el carácter especificado.
locchar_back(CAR, N, CADENA) Entero Similar a locchar, con la diferencia de que la búsqueda se realiza hacia atrás, comenzando a partir del carácter número N. Por ejemplo, locchar_back(`n`, 9, página_web) realiza búsquedas en el campo página_web comenzando por el noveno carácter y yendo hacia atrás, hacia el inicio de la cadena. Si la función tiene un desplazamiento no válido (por ejemplo, un desplazamiento que va más allá de la longitud de la serie), esta función devuelve $null$. Lo ideal sería usar locchar_back junto con la función length(<campo>) para utilizar dinámicamente la longitud del valor actual del campo. Por ejemplo, locchar_back(`n`, (length(página_web)), página_web).
lowertoupper(CAR) lowertoupper(CADENA) CAR o Cadena La entrada puede ser una cadena o un carácter, y se utiliza en esta función para devolver un nuevo elemento del mismo tipo, con los caracteres en minúscula convertidos a sus equivalentes en mayúscula. Por ejemplo, lowertoupper(`a`), lowertoupper(“Mi cadena”) y lowertoupper(nombre_campo(2)) son todas expresiones válidas.
coincidencias Booleana Devuelve verdadero si una cadena coincide con un patrón determinado. El patrón debe ser una cadena literal, no puede ser un nombre de campo que contenga un patrón. Debe utilizarse un signo de cierre de interrogación (?) se puede incluir en el patrón para que coincida exactamente con un carácter, un asterisco (*) coincide con cero o más caracteres. Para que coincida con un asterisco o una interrogación literal (en lugar de utilizarlos como comodines), se puede utilizar una barra inclinada invertida (\) como carácter de escape.
replace(SUBCADENA, NUEVASUBCADENA, CADENA) Cadena En la CADENA especificada, sustituye todas las instancias de SUBCADENA con NUEVASUBCADENA.
replicate (RECUENTO, CADENA) Cadena Devuelve una cadena que consta de la cadena original copiada el número específico de veces.
stripchar(CAR,CADENA) Cadena Permite eliminar determinados caracteres de una cadena o campo. Por ejemplo, puede utilizar esta función para eliminar de los datos símbolos adicionales (como notaciones de moneda) con el fin de obtener un nombre o número simple. Por ejemplo, la sintaxis stripchar(`$`, 'Coste') devuelve un nuevo campo con el signo de dólar eliminado en todos los valores. Nota: Asegúrese de utilizar comillas inversas simples para entrecomillar el carácter especificado.
skipchar(CAR, N, CADENA) Entero Busca en la cadena CADENA cualquier carácter que no sea CAR, comenzando por el carácter número N. Esta función devuelve una subcadena de enteros que indica el punto en que se encuentra cada uno, o 0 si todos los caracteres a partir del Nson CAR. Si la función tiene un desplazamiento no válido (por ejemplo, un desplazamiento superior a la longitud de la cadena), esta función devuelve $null$. locchar se suele utilizar junto con las funciones skipchar para determinar el valor de N (el punto en que comenzar la búsqueda en la cadena). Por ejemplo, skipchar(`s`, (locchar(`s`, 1, "MiCadena")), "MiCadena").
skipchar_back(CAR, N, CADENA) Entero Similar a skipchar, con la diferencia de que la búsqueda se realiza hacia atrás, comenzando a partir del carácter número N.
startstring(LONGITUD, CADENA) Cadena Extrae los primeros N caracteres de la cadena especificada. Si la longitud de la cadena es menor o igual que la longitud especificada, no hay cambios.
strmember(CAR, CADENA) Entero Equivalente a locchar(CAR, 1, CADENA). Devuelve una subcadena de enteros que indica el punto en que CHAR aparece por primera vez o bien 0. Si la función tiene un desplazamiento no válido (por ejemplo, un desplazamiento superior a la longitud de la cadena), esta función devuelve $null$.
subscrs(N, CADENA) CAR Devuelve el carácter CAR número N de la cadena de entrada CADENA. Esta función también se puede escribir de forma abreviada como CADENA(N). Por ejemplo, lowertoupper(“nombre”(1)) es una expresión válida.
substring(N, LON, CADENA) Cadena Devuelve una cadena SUBCADENA, que consiste en los caracteres LON de la cadena CADENA, a partir del carácter situado en el subíndice N.
substring_between(N1, N2, CADENA) Cadena Devuelve la subcadena de CADENA que comienza en el subíndice N1 y termina en el subíndice N2.
trim(CADENA) Cadena Extrae los espacios en blanco iniciales y finales de la cadena especificada.
trim_start(CADENA) Cadena Extrae los espacios en blanco iniciales de la cadena especificada.
trimend(CADENA) Cadena Extrae los espacios en blanco finales de la cadena especificada.
unicode_char(NÚM) CAR La entrada debe ser decimal; no se admiten valores hexadecimales. Devuelve el carácter con el valor Unicode NÚM.
unicode_value(CAR) NUM Devuelve el valor Unicode de CAR
uppertolower(CAR) uppertolower(CADENA) CAR o Cadena La entrada puede ser una cadena o un carácter y se utiliza en esta función para devolver un nuevo elemento del mismo tipo, con los caracteres en mayúscula convertidos a sus equivalentes en minúscula. Nota: No olvide especificar las cadenas con comillas dobles y los caracteres con comillas inversas simples. Los nombres de campos simples deben especificarse sin comillas.