Header Ads Widget

Ticker

6/recent/ticker-posts

Trabajar con funciones comunes de cadenas de MySQL

 

MySQL tiene muchas funciones integradas para tratar con cadenas. Muchas veces, podemos realizar estas operaciones usando cualquier lenguaje de programación que estemos usando con MySQL como PHP. Otras veces, sin embargo, es realmente útil poder manipular cadenas directamente en nuestras declaraciones MySQL. En este episodio, veremos cómo trabajar con cadenas y hacer cosas como ponerlas en mayúsculas o minúsculas, invertir su orden, reemplazar caracteres con otros caracteres, pegar cadenas con concatenación y mucho más. ¡Vamos directo a ello!


Cadenas en MySQL

Probablemente, si está leyendo un artículo en este sitio web, está familiarizado con PHP y sus muchas funciones de cadena de phpMySQL también tiene algunas formas útiles de operar con cadenas. Veamos algunos de ellos ahora.

Uso de las funciones superior e inferior

Cuando hacemos una consulta de selección en la base de datos, podemos aplicar una función loweruppera los datos de cadena. En este ejemplo, obtendremos todos los nombres de nuestros amigos en minúsculas con sus apellidos en mayúsculas.

mysql> seleccione inferior (primer nombre), superior (primer nombre) de amigos;
+ ------------------- + ------------------- +
| inferior (primer nombre) | superior (primer nombre) |
+ ------------------- + ------------------- +
| brenda | BRENDA |
| Dave | DAVE |
| emmet | EMMET |
| frankie | FRANKIE |
| jack | JACK |
| jacob | JACOB |
| jim | JIM |
| mary | MARY |
| sheila | SHEILA |
| sofia | SOFIA |
+ ------------------- + ------------------- +
10 filas en conjunto (0.04 seg)

Repetir cadena con MySQL

Aunque puede parecer un caso de uso extraño, puede hacer que una cadena se repita en MySQL. La repeat()función toma la cadena que se repetirá como primer parámetro seguido del número de veces que se repetirá como segundo parámetro. Aquí hay un ejemplo:

mysql> seleccionar repetir ('ohyeah!', 3);
+ -------------------------- +
| repetir ('ohyeah!', 3) |
+ -------------------------- +
| ¡Oh si! ¡Oh si! ¡Oh si! |
+ -------------------------- +
1 fila en conjunto (0.04 seg)

mysql> seleccione repetir (primer nombre, 4) de amigos;
+ ------------------------------ +
| repetir (nombre, 4) |
+ ------------------------------ +
| BrendaBrendaBrendaBrenda |
| DaveDaveDaveDave |
| EmmetEmmetEmmetEmmet |
| FrankieFrankieFrankieFrankie |
| JackJackJackJack |
| JacobJacobJacobJacob |
| JimJimJimJim |
| MaryMaryMaryMary |
| SheilaSheilaSheilaSheila |
| SofiaSofiaSofiaSofia |
+ ------------------------------ +
10 filas en conjunto (0,00 seg)

Reemplazo de datos de salida

Podemos reemplazar un fragmento de una cadena con otro fragmento de texto. Esto funciona de manera similar a una str_replacefunción de tipo de PHP. Como ejemplo, reemplazaremos la letra a con la cadena BOO en todos los nombres de nuestra tabla de amigos. Tenga en cuenta que estos no están modificando realmente los datos subyacentes, sino más bien haciendo el cambio en los datos que se generan. Podemos ver esto seleccionando todos los datos de la tabla de amigos y podemos ver que todo está intacto y como nuevo.

mysql> seleccione reemplazar (first_name, 'a', 'BOO') de amigos;
+ --------------------------------- +
| reemplazar (nombre, 'a', 'BOO') |
+ --------------------------------- +
| BrendBOO |
| DBOOve |
| Emmet |
| FrBOOnkie |
| JBOOck |
| JBOOcob |
| Jim |
| MBOOry |
| SheilBOO |
| SofiBOO |
+ --------------------------------- +
10 filas en conjunto (0,00 seg)

mysql> seleccionar * de amigos;
+ ------------ + ------------ + ------------ + ---------- - + ---------- +
| first_name | last_name | teléfono_celular | cumpleaños | house_id |
+ ------------ + ------------ + ------------ + ---------- - + ---------- +
| Brenda | Penblanc | 719-4521 | 1970-02-15 | 5 |
| Dave | Chappelle | 977-5555 | 1973-08-24 | 4 |
| Emmet | Brickowski | 987-1244 | 2013-07-15 | 3 |
| Frankie | Farmington | 978-1235 | 1977-04-17 | 6 |
| Jack | Penblanc | 581-1841 | 1967-04-23 | 5 |
| Jacob | Olivio | 512-3411 | 1972-10-01 | 7 |
| Jim | Jones | 423-1423 | 1985-07-24 | 1 |
| Mary | Olivio | 412-9823 | 1972-11-11 | 7 |
| Sheila | Farmington | 591-8522 | 1977-07-12 | 6 |
| Sofia | Vergara | 487-4612 | 1972-07-10 | 2 |
+ ------------ + ------------ + ------------ + ---------- - + ---------- +
10 filas en conjunto (0,00 seg)

Inversión de datos

Al usar la reverse()función, podemos revertir fácilmente el resultado de una consulta. Aquí, recuperaremos todos los nombres e invertiremos sus letras:

mysql> seleccione reverse (first_name) de amigos;
+ --------------------- +
| reverso (nombre) |
+ --------------------- +
| adnerB |
| evaD |
| temmE |
| eiknarF |
| kcaJ |
| bocaJ |
| miJ |
| yraM |
| aliehS |
| aifoS |
+ --------------------- +
10 filas en conjunto (0,00 seg)

Concatenación de cadenas con MySQL

La concatenación de cadenas es la forma en que podemos combinar cadenas. Es probable que esté bastante familiarizado con esto, ya que tanto JavaScript como PHP utilizan la concatenación de cadenas todo el tiempo. En MySQL también podemos hacerlo con bastante facilidad. Probemos una consulta:

mysql> seleccione concat (first_name, '', last_name) de amigos donde last_name = 'Olivio';
+ ------------------------------------ +
| concat (nombre, '', apellido) |
+ ------------------------------------ +
| Jacob Olivio |
| Mary Olivio |
+ ------------------------------------ +
2 filas en conjunto (0.04 seg)

¡Frio! Pudimos seleccionar los Olivios y tener una buena salida formateada al pegar sus nombres y apellidos con un espacio entre ellos.

Podemos dar un paso más con la concat_ws() función. Con esta función, podemos especificar el separador y obtener tantos campos como queramos. Probémoslo con un separador personalizado aquí:

mysql> seleccione concat_ws ('@@@@@', nombre, apellido, teléfono celular, id de casa) de amigos;
+ ------------------------------------------------- ------------------ +
| concat_ws ('@@@@@', primer nombre, apellido, teléfono celular, id de casa) |
+ ------------------------------------------------- ------------------ +
| Brenda @@@@@ Penblanc @@@@@ 719-4521 @@@@@ 5 |
| Dave @@@@@ Chappelle @@@@@ 977-5555 @@@@@ 4 |
| Emmet @@@@@ Brickowski @@@@@ 987-1244 @@@@@ 3 |
| Frankie @@@@@ Farmington @@@@@ 978-1235 @@@@@ 6 |
| Jack @@@@@ Penblanc @@@@@ 581-1841 @@@@@ 5 |
| Jacob @@@@@ Olivio @@@@@ 512-3411 @@@@@ 7 |
| Jim @@@@@ Jones @@@@@ 423-1423 @@@@@ 1 |
| Mary @@@@@ Olivio @@@@@ 412-9823 @@@@@ 7 |
| Sheila @@@@@ Farmington @@@@@ 591-8522 @@@@@ 6 |
| Sofia @@@@@ Vergara @@@@@ 487-4612 @@@@@ 2 |
+ ------------------------------------------------- ------------------ +
10 filas en conjunto (0,00 seg)

Obtener la primera y la última parte de una cadena

Podemos usar las funciones left()right()para hacer precisamente eso. Cada función toma la columna en cuestión como primer parámetro y el número de caracteres a devolver como segundo parámetro. Podemos probar esto en la columna de direcciones de nuestra tabla de casas. Tomaremos los primeros 5 caracteres comenzando por la izquierda y los primeros 7 caracteres comenzando por la derecha. Vamos a ver:

mysql> seleccione izquierda (dirección, 5), derecha (dirección, 7) de las casas;
+ ------------------ + ------------------- +
| izquierda (dirección, 5) | derecha (dirección, 7) |
+ ------------------ + ------------------- +
| 12 Du | ston MA |
| 54 Ma | nway NH |
| 742 A | isco CA |
| 836 S | tham MA |
| 87 Hola | ando FL |
| 88 Bu | towe VT |
| 92 Bu | nver CO |
+ ------------------ + ------------------- +
7 filas en conjunto (0,00 seg)

Devolución de la longitud de las cadenas

Al usar la length()función, podemos verificar la longitud de la cadena en nuestras diversas columnas. Aquí comprobaremos la longitud de todos los nombres y apellidos en nuestra tabla de amigos. La segunda consulta es simplemente mostrar todos los nombres para que podamos confirmar que sí, la longitud devuelta para todos nuestros datos es correcta.

mysql> seleccione la longitud (primer nombre), longitud (apellido) de amigos;
+ -------------------- + ------------------- +
| longitud (primer nombre) | longitud (apellido) |
+ -------------------- + ------------------- +
| 6 | 8 |
| 4 | 9 |
| 5 | 10 |
| 7 | 10 |
| 4 | 8 |
| 5 | 6 |
| 3 | 5 |
| 4 | 6 |
| 6 | 10 |
| 5 | 7 |
+ -------------------- + ------------------- +
10 filas en conjunto (0,00 seg)

mysql> seleccionar * de amigos;
+ ------------ + ------------ + ------------ + ---------- - + ---------- +
| first_name | last_name | teléfono_celular | cumpleaños | house_id |
+ ------------ + ------------ + ------------ + ---------- - + ---------- +
| Brenda | Penblanc | 719-4521 | 1970-02-15 | 5 |
| Dave | Chappelle | 977-5555 | 1973-08-24 | 4 |
| Emmet | Brickowski | 987-1244 | 2013-07-15 | 3 |
| Frankie | Farmington | 978-1235 | 1977-04-17 | 6 |
| Jack | Penblanc | 581-1841 | 1967-04-23 | 5 |
| Jacob | Olivio | 512-3411 | 1972-10-01 | 7 |
| Jim | Jones | 423-1423 | 1985-07-24 | 1 |
| Mary | Olivio | 412-9823 | 1972-11-11 | 7 |
| Sheila | Farmington | 591-8522 | 1977-07-12 | 6 |
| Sofia | Vergara | 487-4612 | 1972-07-10 | 2 |
+ ------------ + ------------ + ------------ + ---------- - + ---------- +
10 filas en conjunto (0,00 seg)

Resumen de cadenas de MySQL

Como puede ver, hay muchas formas de trabajar con cadenas en MySQL. La capacidad de formatear y moldear los datos a nuestras necesidades es muy útil en MySQL. Un beneficio adicional es que, a menos que desee cambiar los datos en sus tablas con declaraciones de inserción y actualización, todos los datos subyacentes permanecerán intactos.


Publicar un comentario

0 Comentarios