Funciones de cadena

Las funciones de cadena suelen adoptar argumentos de cadena y devuelven resultados de cadena. Contrariamente a lo que ocurre en los lenguajes de programación, el primer carácter de la cadena corresponde a  la posición 1, en vez de 0.

ascii()

Sintaxis:

ascii(cadena)

Devuelve el valor del código internacional ASCII de la cadena (el que está más a la izquierda).

Ejemplos:

bin()

Sintaxis:

bin(numero)

Devuelve una representación de cadena con el un valor en formato binario del número bigint especificado, muestra 0 si el valor no se puede convertir (la función lo convertirá siempre que pueda hacerlo desde la izquierda) y null si el valor es nulo.

Ejemplos:

Esta función equivale a conv(numero, 10, 2).

bit_length()

Sintaxis:

bit_length()

Devuelve la longitud de una cadena en bits.

Ejemplo:

char()

Sintaxis:

char (número [, número2 [, número2 [, ...]]])

Devuelve el carácter asociado al código numero ASCII, ignora los valores nulos. Los decimales son redondeados al valor entero más próximo.

Ejemplos:

char_length()

Sintaxis:

char_length(cadena)

Devuelve la longitud de la cadena, medida en caracteres. Un carácter de múltiples bytes cuenta como un sólo carácter. Esto significa que para una cadena de caracteres que contiene cinco caracteres de dos bytes, length() devuelve 10, mientras char_length() devuelve 5.

Sinonimo:

length()

Ejemplo:

concat()

Sintaxis:

concat (cadena1 [, cadena2 [, ...]])

Une los argumentos cadena1, cadena2, …, y devuelve el resultado en una única cadena. Si el argumento es null el resultado será null. Los argumentos que no son cadena (texto) se convierten a cadenas.

Ejemplo:

concat_ws()

Sintaxis:

concat_ws(separador, cadena1[, cadena2[, ...]])

Similar a concat() pero el primer argumento es el separador entre cada una de las palabras que queremos utilizar. Ignora todas las cadenas nulas (excepto el separador, en cuyo caso el resultado será null). No es necesario que el separador sea una cadena.

Ejemplo:

conv()

conv(n,desde_base,hacia_base);

Convierte un número desde una base a otra. Devuelve una representación de cadena de carácters para el número n, convertido desde_base hacia_base. Devuelve un valor NULL si algún argumento es NULL. El argumento n se interpreta como entero, pero puede especificarse como un entero o cadena. La base mínima es 2 y la máxima es 36. Si hacia_base es un número negativo, n se trata como un número con signo. De otro modo, n sería tratado como un número sin signo. conv() funciona con precisión de 64-bit.

Ejemplos:

elt()

Sintaxis:

elt(número, cadena1[, cadena2, ...])

Utiliza número como índice para determinar la cadena que devolverá por orden de izquierda a derecha. Devuelve null si no hay ninguna cadena.

Ejemplo:

export_set()

Sintaxis:

export_set(número, on, off[, separador[. número_de_bits]])

Examina un número binario y, por cada bit definido, devolverá on, de lo contrario devolvera off. Se utilizan 64 bits pero podemos cambiar el valor con numero_de_bits.

Ejemplos:

field()

Sintaxis:

field(cadena, cadena1[, cadena2, ...])

Devuelve el índice de la cadena de la lista siguiente. Si cadena1 coincide, el índice será 1, Si coincide cadena2 el índice será 2 y así sucesivamente. Devuelve cero si no encuentra una cadena.

Ejemplos:

find_in_set()

Sintaxis:

find_in_set(cadena, lista_de_cadenas)

Devuelve un índice que coincide con la cadena, pero a diferencia de field(), esta función busca una cadena separada por comas o del tipo set. Si el primer argumento es una cadena constante y el segundo es una columna de tipo set, la función find_in_set() está optimizada para usar aritmética de bit. Devuelve 0 si cadena no está en lista_de_cadenas o si lista_de_cadenas es una cadena vacía. Devuelve null si algún argumento es null. Esta función no funciona apropiadamente si el primer argumento contiene un carácter de coma (‘,’).

Ejemplo:

hex()

Sintaxis:

hex (cadena o número)

Devuelve un valor hexadecimal de la cadena o número bigint especificado. Devuelve 0 si el número no se puede convertir (siempre que pueda, la función hará la conversión desde la izquierda) o null si es nulo.

Si el argumento es un número, se convierte a hexadecimal (similar a la función conv(número, 10,16). Si es una cadena, cada caracter de la misma se convierte en su equivalente numérico de la tabla ascii (por ejemplo, a=97, b=98, etc.) y, a su vez, cada uno de estos números se convierten a su equivalente hexadecimal.

insert()

Sintaxis:

insert (cadena, posición, longitud, nueva_cadena)

Sustituye una parte de la cadena que empieza en la posición y continua la longitud de caracteres con nueva_cadena. La longitud de nueva_cadena y la longitud especificada pueden ser diferentes, en cuyo caso cambiará la longitud de la cadena original.

Ejemplo:

instr()

Sintaxis:

instr(cadena, subcadena)

Busca dentro de la cadena la primera instancia de la subcadena (sin distinguir entre mayúsculas y minúsculas siempre que una de las cadenas no sea binaria), y devuelve la posición o devuelve 0 si la subcadena no se encuentra. La primera letra se encuentra en la posición 1.

Ejemplo:

lcase()

Sintaxis:

lcase(cadena)

Sinónimo:

lower(cadena)

Devuelve la cadena con todos los caracteres en minúsculas según el mapa del conjunto de caracteres actual (por defecto es ISO-8859-1 Latin1).

Ejemplos:

left()

Sintaxis:

left (cadena, longitud)

Devuelve una cantidad de caracteres desde la cadena propuesta por la longitud empezando por la izquierda de la cadena. Es lo más seguro si se trata de bytes múltiples.

length()

Sintaxis:

length(cadena)

Sinónimo:

octet_length()

Devuelve la longitud de la cadena. Si es posible, el argumento se convierte en cadena.

locate()

Sintaxis:

locate(subcadena, cadena [, posición])

Busca la primera instancia de subcadena en la cadena sin distinguir entre mayúsculas y minúsculas (a menos que una de las cadenas sea binaria) y devuelve la posición, o 0, si no encuentra la subcadena. Si proporcionamos el argumento opcional posición, la busqueda empieza desde ese punto. La primera letra se encuentra en la posición 1.

Ejemplo:

lpad()

Sintaxis:

lpad(cadena, longitud, cadena_relleno)

Rellena la cadena de la izquierda con cadena_relleno hasta que el resultado tenga los caracteres indicados en longitud. Si la cadena es mayor que la longitud, se reducira en la cantidad de caracteres indicados en longitud.

ltrim()

Sintaxis:

ltrim(cadena)

Elimina los espacios situados por delante de la cadena.

make_set()

Sintaxis:

make_set(bits, cadena1, cadena2,...)

Devuelve un conjunto (una cadena que contiene subcadenas separadas por comas ‘,’) consistente en las cadenas correspondientes a los bits activos en bits; cadena1 corresponde al bit 0, cadena2 al bit 1, etc. Las cadenas NULL en cadena1, cadena2, … no se añaden al resultado:

oct()

Sintaxis:

oct(número)

Devuelve el valor octal del número con el tipo bigint especificado, 0 si el número no se puede convertir (la función lo intentará desde la parte más a la izquierda) o null si el valor es nulo.

ord()

ord(cadena)

Devuelve ael valor ascii del primer caracter de la cadena (el que se encuentra más a la izquierda), 0 si la cadena está vacia y null si la cadena es nula. Es similar al la función ascii(), a excepción de que el carácter es un carácter multibyte, en cuyo caso el valor se calcula como un número en base 256, es decir, cada byte vale 256 veces más que el siguiente. por ejemplo la formula para un carácter de 2 bytes seria:

(byte1_codigo_ascii * 256) + (byte2_codigo_ascii * 256)

Ejemplo:

position()

Sintaxis:

position(subcadena in cadena)

Busca una subcadena dentro de una cadena y devuelve la posición (empezando desde 1) o 0 si no encuentra la subcadena. Esta función no distingue entre mayúsculas y minúsculas (a menos que uno de los argumentos sea una cadena binaria).

Ejemplo:

quote()

Sintaxis:

quote(cadena)

Permite utilizar la convención de escape correspondiente a los caracteres de comilla simple (‘ ‘), de comillas dobles (”  “), null ascii y Control-Z, rodeando la cadena entre comillas simples para que se pueda utilizar con seguridad en una instrucción SQL. Si el argumento es null no es necesario usar las comillas simples.

Ejemplo:

repeat()

Sintaxis:

repeat(cadena, número)

Devuelve una cadena repetida un número de veces. Si número <= 0, devuelve una cadena vacía. Devuelve mull si cadena o múmero son null.

replace()

Sintaxis:

replace(cadena, desde_cadena, a_cadena)

Sustituye todas las instancias desde_cadena que encuentre en la cadena por a_cadena.

Ejemplo:

reverse()

Sintaxis:

reverse(cadena)

Invierte el orden de los carácteres de cadena devolviendo el resultado. Esta función es segura para multibytes.

right()

Sintaxis:

right(cadena, longitud)

Devuelve el número de caracteres especificado en longitud contando desde la derecha de la cadena.

rpad()

Sintaxis:

rpad(cadena, longitud, cadena_relleno)

Rellena la cadena a la derecha con cadena_relleno hasta que el resultado tenga los caracteres especificados en longitud. Si la cadena es mayor que la longitud, se reduce el número de caracteres especificados en longitud.

Ejemplo:

rtrim()

Sintaxis:

rtrim(cadena)

Elimina los espacios situados al final de la cadena y devuelve el resultado.

Ejemplo:

round()

Sintaxis:

round(x)

Devuelve el argumento x, redondeado al entero más cercano.

round(x, d)

Con dos argumentos redondea a un número con d decimales.

Ejemplo:

soundex()

Sintaxis:

soundex(cadena)

Devuelve una cadena ‘soundex’ desde cadena. Dos cadenas que suenen casi igual tienen cadenas soundex idénticas. Una cadena soundex estándar tiene 4 caracteres de longitud, pero soundex() devuelve una cadena de longitud arbitraria. Se puede usar substring() sobre el resultado para obtener una cadena soundex estándar. Cualquier carácter no alfanumérico será ignorado. Todos los caracteres alfabéticos fuera del rango A-Z serán tratados como vocales.

Ejemplo:

space()

Sintaxis:

space(número)

Devuelve una cadena formada por el número de espacios.

Ejemplos:

substring()

Sintaxis:

substring(cadena, posición [, longitud])

substring(cadena from posición [for longitud])

Devuelve una subcadena del argumento de cadena comenzando desde posición (que empieza en 1) y, opcionalmente con la longitud especificada.

Ejemplo:

substring_index()

Sintaxis:

substring_index(cadena, delimitador, número)

Devuelve la subcadena de la cadena hasta llegar a número (si es positivo) o después de número (si es negativo) de instancias desde el delimitador. La función es segura para multibytes.

Ejemplo:

trim()

Sintaxis:

trim([both | leading | trailing] [cadena_recorte] from ] cadena)

Devuelve la cadena eliminando todos los prefijos y/o sufijos de cadena_recorte. Si no se incluye ninguno de los especificadores both, leading o trailing, se asume both. Si no se especifica la cadena_recorte, se eliminan los espacios.

Ejemplos:

ucase()

Sintaxis:

ucase(cadena)

Sinónimo:

upper(cadena)

Devuelve una cadena con todos los carácteres convertidos en mayúsculas (en función del conjunto de caracteres actual). La función es segura para multibytes.

Ejemplos:

  • Hemos conocido muchas funciones de cadena, ahora sabemos como ver el código ASCII de un carácter con la función ascii(). Y lo contrario con char().
  • Hemos podido saber la longitud de una cadena en bits con bit_length().
  • Hemos unido (concatenado) dos cadenas en una con concat().
  • Hemos convertido un número desde una base a otra con conv().
  • Con elt() hemos visto comoo utilizar un número como índice para devolver una cadena separada por comas.
  • Ensaya con las funciones de cadena y encontrarás que te serán útiles.