No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

脷ltima oportunidad para asegurar tu aprendizaje por 1 a帽o a precio especial

Antes: $249

Currency
$189/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

0D
10H
10M
37S
Curso Pr谩ctico de SQL

Curso Pr谩ctico de SQL

Israel V谩zquez Morales

Israel V谩zquez Morales

Regularizando expresiones

23/29
Recursos

Aportes 51

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

鈥溌 respirar!, ya acab贸 el cardio鈥. JAJAJA

La expresi贸n regular es la siguiente

~*'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'

Experimentando un poco con lpad y rpad, logre dibujar un 谩rbol 馃槀 馃尣

SELECT lpad('\', s.a, rpad(lpad('/', d.e, ' '), s.a, '*'))
FROM generate_series(18, 26) AS s(a), 
	 generate_series(17,0,-2) AS d(e)
LIMIT 10;```

Interesante clase. Tiro un tip: Este s铆mbolo 鈥榽鈥 se hace con ALT + 126.

Para los que quieran el filtrado de los 鈥樷橜google鈥欌
~*鈥橻A-Z0-9._%卤]+@google[A-Z0-9.-]+.[A-Z]{2,4}鈥

SELECT  lpad ('*', generate_series, '*')
FROM    generate_series(1,10);```

lo dijo starlord, yo le haria caso

Expresiones regulares ser谩 uno de mis pr贸ximos cursos, es clave para el an谩lisis de textos.

Dato: La expresi贸n que va dentro de las comillas no debe tener espacios.

C贸digo escrito en clase馃槂.

select email
from platzi.alumnos
where email ~*'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}';
-- ~*: De forma global
--[A-Z0-9.%+-]: Que vayan de la A a la Z sin contar may煤sculas o min煤sculas y que vayan del 0 al 9(alfanum茅ricos) o que incluyan algunos caracteres como ._%+-
-- @[A-Z0-9.-]: espec铆ficamente debe existir el caracter @ y luego los dem谩s caracteres y puede tenr . o -
-- \.[A-Z]{2,4}: termina en . y al final van de 2 a 4 caracteres max.

select email
from platzi.alumnos
where email ~*'[A-Z0-9._%+-]+@google[A-Z0-9.-]+\.[A-Z]{2,4}';
-- filtrar correos de google

No pude hallarlo en SQL Server.
驴Alguien pudo realizar el c贸digo en SQL Server?

Si a alguien le interesa esta es la expresi贸n regular completa para generar n煤meros realistas de tel茅fonos de Estados Unidos:
[2-9][0-9]{2}-[2-9][0-9]{2}-[0-9]{4}

Regularizando expresiones
Permiten insertar una l贸gica extensa y compleja de manera sencilla

SELECT email
FROM platzi.alumnos
WHERE email ~*'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}';

Ejercicio de la clase anterior:

select lpad('*', s.a, '*')
from generate_series(1, 15) AS s(a);

Las expresiones regulares son tremendamente utiles, solamente pensando en los correos, podemos saber de que pais es cada usuario a帽adiendo un Group by por (.co, .ar, .mx, .ru, etc), esta ha sido la clase que mas me llamo la atencion de lo que va hasta ahora.

ya soy fit?

Este fue el c贸digo que se me ocurri贸:

SELECT lpad('*', a.id, '*'), s.a
FROM platzi.alumnos AS a
	INNER JOIN generate_series(0, (SELECT COUNT(*) FROM platzi.alumnos)) AS s(a)
	ON s.a = a.id
LIMIT 30;

Para los que usan MySQL Worbench, pueden utilizar el siguiente c贸digo:

SELECT email
FROM platzi.alumnos
WHERE email REGEXP 鈥榌A-Z0-9._%卤]+@[A-Z0-9.-]+.[A-Z]{2,4}鈥;

Ahora las terminaciones de dominio (.com, .travel, .info, .club, .cloud) no son m谩s 2 a 4, pueden ser m谩s extensos. Ojo ah铆. Poco comunes, pero los hay.

Curso de expresiones regulares terminando 茅ste 馃懢

<h3>pruebas=# SELECT rpad(鈥榮ql鈥, generate_series(0,10),鈥*鈥);
rpad</h3>

s
sq
sql
sql*
sql**
sql***
sql****
sql*****
sql******
sql*******
(11 filas)

Para el caso de postgresql ac谩 vemos los comodines que podemos emplear como regex (expresiones regulares) para buscar patrones en cadenas de texto <https://www.postgresql.org/docs/current/functions-matching.html>
buenas comparto la soluci贸n que hice del ejercicio de lpad + generate\_series. Saludos ```js SELECT lpad('*',al.id,'*') from platzi.alumnos as al inner join generate_series(0,10) as s(a) on s.a = al.id ```
```js SELECT rpad('*', a, '*') FROM generate_series(1, 16) AS s(a); ```

ordinality hace casi la misma acci贸n que un SELECT ROW_NUMBER. Aqu铆 mi c贸digo:

SELECT *, ROW_NUMBER() OVER() AS row_id
FROM generate_series (10,2,-2)

En MySql, para el uso de expresiones regulares, se utiliza el comando regexp 鈥渁qu铆 el patr贸n鈥. en este caso para el email quedar铆a as铆.

select email, row_number() over()
from alumnos 
where email regexp "[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}";

**ESTO ES UNA ESCARMUZA鈥 prender un cigarro AHORA VIENE LA GUERRA. **

Yo lo hice de esta manera:

SELECT lpad('*', t.s, '*')
FROM platzi.alumnos AS a
         INNER JOIN generate_series(0, 20) AS t(s)
                    ON t.s = a.id
WHERE t.s <= 10;

Es muy importante las expresiones regulares sobre todo para manipulacion de datos de tipo String , en mi caso para agilizar las busquedas usaria un like

SELECT email
FROM alumnos
WHERE email LIKE '%@google%'

En la ultima expresi贸n regular de la clase donde se buscan los correos @google, el resultado no muestra todos los correos de google que hay en la tabla.

La expresi贸n regular

'[A-Z0-9._%+-]+@google[A-Z0-9.-]+\.[A-Z]{2,4}'

indica que debe existir al menos un caracter despues de la palabra google y antes del dominio.

Para obtener todos los correos de google la expresi贸n regular debe permitir que tenga o no caracteres despues de la palabra google. Se logra cambiando el 藵+藵 por un 藵?藵. Quedando la expresion regular:

'[A-Z0-9._%+-]+@google[A-Z0-9.-]?\.[A-Z]{2,4}'

SELECT lpad(鈥欌,generate_series(1,10),鈥*鈥);

sirve mi codigo?

鈥 GENERAR UN TRIANGULO A TRAV脡S DE GENERATE_SERIES
SELECT LPAD(鈥楬OLA鈥, CAST(PLOX.A AS INTEGER), 鈥*鈥)
FROM (
SELECT DISTINCT S.A
FROM PLATZI.ALUMNOS AS A
INNER JOIN GENERATE_SERIES(0, 100) AS S(A)
ON S.A = A.CARRERA_ID
ORDER BY S.A
) AS PLOX;

Excelente cardio!!

Si en una vista se desea ocultar el nombre de usuario en la direcci贸n de correo electr贸nico se podr铆a usar regex y lpad as铆:

SET search_path = 'platzi';
SELECT lpad((regexp_matches(email, '^(.*)(@.*)$'))[2], LENGTH(email), '*') AS token_email FROM alumnos;

puro cardio en zona 1-2 jajaja

Solucion al reto anterior, utilizando ORDINALITY para crear una columna con numeros ordinales, y que se puede utilizar dentro de la funcion lpad

SELECT lpad('*',ordinality::int,'*')
FROM generate_series(100,2,-2) WITH ORDINALITY

Las expresiones regulares se van a utilizar para hacer un filtrado de datos.

Empiezan con ~*

-- Va a filtrar todos los emails de acuerdo al sig. patron
SELECT email FROM platzi.alumnos
WHERE email ~*'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}';

-- Nos trae filtrado la palabra 'google'
SELECT email FROM platzi.alumnos
WHERE email ~*'[A-Z0-9._%+-]+@google[A-Z0-9.-]+\.[A-Z]{2,4}';

Aqu铆 mi soluci贸n 馃槂!

SELECT LPAD('*', a,'*')
FROM generate_series(1,5) AS s(a)

En la 煤ltima parte no aparecen todos los correos '鈥google鈥'
Para que arroje todos los correos que sean @google yo borr茅 la 煤ltima parte de la expresi贸n regular.
(Me arroj贸 34 rows)

SELECT email
FROM platzi.alumnos
WHERE email ~*'[A-Z0-9._%+-]+@google[A-Z0-9.-]';

Don鈥檛 get discourage! ya casi terminamos:)

鈥揜ETO: GENERANDO RANGOS CON LPAD:


SELECT lpad('*', carrera_id, '*')
FROM platzi.alumnos AS a
	INNER JOIN generate_series(0,100, 10) AS s(a)
	ON s.a = a.carrera_id
ORDER BY a.carrera_id ASC;

RETO CLASE PASADA

SELECT lpad (鈥*鈥, s.a, 鈥-鈥)
FROM generate_series(1,15) AS s(a);

Mi propiesta de soluci贸n a la prueba del ejercicio anterior fue la m谩s sencilla que se me ocurri贸, quedo abierto a sus comentarios.

SELECT lpad('*',generate_series(1,10),'*') 

**El resultado que obtuve fue: **

Ah铆 va el reto de mi parte

SELECT rpad('HOLA',n.id,';)')
FROM generate_series(1,100,1) AS n(id)

SELECT lpad(鈥鈥, generate_series(1,5),鈥鈥)

select lpad(鈥鈥,generate_series(1,10),鈥鈥)

No entend铆 nada jejejejeje

	SELECT 
		alumnos.id,
		CONCAT(alumnos.nombre, ' ', alumnos.apellido) as nombre,
		alumnos.fecha_incorporacion as fechaOriginal, 
		alumnos.nroDiasIncremento AS Incremento,
		(alumnos.fecha_incorporacion + alumnos.nroDiasIncremento) as nuevaFecha
	FROM
		(SELECT 
			id, 
			nombre, 
			apellido, 
			CAST(fecha_incorporacion AS DATE) AS fecha_incorporacion, 
			CAST((SELECT MAX(s.dias) FROM generate_series(1, alumnos.id) AS s(dias)) AS int) as nroDiasIncremento 
		FROM alumnos) as alumnos
	ORDER BY alumnos.id

Una vez puse mi correo electr贸nico en may煤sculas para entrar a platzi y me sali贸 que no estaba registrado. Esta es una falla que ocurre aqu铆.