Bueno lo que vamos a ver ahora es funciones en Maisí.
Nosotros hemos visto muchas funciones pero voy a agregar varios capítulos porque son muchas las funciones
así que ahora vamos a ver unas diez funciones más o menos que van a fortalecer los conocimientos que
ustedes vienen teniendo hasta ahora.
Lo que hice fue abrir mi Jaydy SQL he agrandado la letra para que ustedes lo puedan ver mejor y vamos
a ver la primera función la primera función es droit y me va a permitir por ejemplo adicionar un intervalo
de un intervalo de tiempo a una fecha determinada.
Vamos a hacer un pequeño ejemplo tenemos el CD ventas fecha fueron ventas y si nosotros ejecutamos esto
me va a traer todas las fechas que tengo en mis facturas en mis ventas.
Muy bien ahora supongamos que quiero una columna adicional para saber la fecha de vencimiento de facturas
calculando por ejemplo que cada fecha de factura se va a incrementar en 30 para obtener una fecha determinada
de vencimiento.
Lo que podemos hacer es además de nuestra columna de ventas fecha por ejemplo vamos a aquí vamos a colocar
fecha la fecha origen por ejemplo y lo que vamos a hacer es un add que es una función de SQL donde vamos
a colocar venta fecha y ahora la cantidad de días por las cuales yo quiero incrementar esa fecha dijimos
30 días muy bien y está este campo lo vamos a llamar por ejemplo fecha vencimiento vamos a ejecutarlo
y me trae los 30 días sumados y esta factura era el 2 de enero los 30 días me da que es el primero de
febrero.
Si vamos bajando vamos a ir viendo como todo se va recalculando.
Fíjense del 28 de febrero al 30 de marzo este es el cálculo que ha hecho la función.
Muy bien lo que vamos a ver a continuación es algo extremadamente importante muy útil y que seguramente
muchos de ustedes por las consultas que me han hecho van a estar interesados que es el tema de la encriptación
de datos y las funciones que vamos a ver son muchas en realidad vamos a ver tres o cuatro instrucciones
para que ustedes vean cómo podemos encriptar en Maisí lo que vamos a hacer aquí es vamos a cambiar de
tabla vamos a productos por ejemplo vamos a ejecutar esto van a ver que tengo mi campo Descripción de
mi tabla de productos y yo quiero ahora jugando un poco con los datos ver cómo sería para encriptar
por ejemplo vamos a usar unas funciones que implementan el Estándar Avanzado en esa función empieza
con A es de Advanced Encryption Standard y se llama encripta
FIJENSE QUE YA Jaydy SQL mientras no la reconocía como una función me la iba colocando con el color
en el que coloca los campos hasta ahora no sabe si en la Tabla Productos existe un ah es en Creep pero
cuando termino de colocar la última letra que es la letra T ya lo reconoce como una función y le cambia
el color.
Muy bien esta función tiene dos parámetros el primer parámetro es el campo por el cual yo voy a encriptar.
Puede ser un campo puede ser un string literal que le coloquemos aquí y lo que nos pide ahora es una
palabra clave por la cual nosotros vamos a encriptar esto es muy útil porque nadie va a saber cómo está
encriptado si no conoce nuestra palabra clave y la palabra clave que vamos a colocar por ejemplo es
maestros no vamos Master's del desarrollo muy bien y esto lo vamos a cerrar y lo vamos a llamar.
Por ejemplo describe
muy bien vamos a ejecutar esto y vean lo que pasa me trae el campo de descripción y el mismo campo totalmente
encriptado.
Cuál es la utilidad de esto que ustedes quieren encriptar los valores de la base de datos lo pueden
hacer sobre todo de información muy sensible.
Lo único que tienen que recordar es cuál fue la clave que ustedes han usado en la encriptación.
Vamos a ver como esto es una encriptación de doble vía quiero decir que la voy a encriptar y la puedo
desencriptar aquí mismo voy a colocar la otra instrucción que sería la contraria que sería a es de Creep
y lo que vamos a desencriptar es precisamente todo este string y le vamos a colocar la palabra clave
que es Master's del desarrollo y lo vamos a colocar aquí muy bien pero que funcione porque a veces uno
intercala y aquí se va a llamar de diputado lo hago así para que ustedes vean que de un lado y del otro
funciona solo en cripto en el aire en la memoria y automáticamente lo desencriptar fíjense esta ejecutando
estas dos funciones una dentro de la otra y obviamente el resultado tiene que ser la descripción desencriptar.
Muy bien ya vimos dos funciones Ah es de Creep y es encripta para encriptar y desencriptar.
Yo voy a pasarles una u RLS las voy a dejar en él en este capítulo vayan a recursos a la parte derecha
del capítulo van a expandir la carpeta que muestra cada uno de los capítulos sus títulos iban a ver
que en este capítulo les va a mostrar una carpeta de recursos.
Qué es lo que voy a colocar ahí voy a colocar el link hacia una página propia de Cycles una página oficial
de mi ciclo donde generalmente vemos las ayudas y es una página totalmente dedicada a la encriptación
y encriptación de datos.
Se van a asombrar de la cantidad de funciones enormes que hay en Maisí culpará encriptar y desencriptar
otra función que podemos usar es la función Lent y la función.
Obviamente me va a devolver la cantidad de caracteres por ejemplo de la descripción de nuestros productos.
Vamos a colocar
y aquí le vamos a colocar primero
aquí vamos a poner largo fueron productos muy bien esto obviamente me va a devolver la descripción y
el largo de caracteres que tiene cada uno de los de las descripciones de mis registros.
Otra cosa que vamos a ver ahora es otra variante de compresión vieron que yo les dije que hay muchas
funciones.
Básicamente les quería explicar dos y por qué dos porque luego hay 20 van a ir a esa página y van a
ver todo lo que tienen que ver con compresión pero éste esta función que voy a enseñar ahora es una
función muy particular porque utiliza los algoritmos que tiene internamente el motor para realizar la
compresión no me pide una palabra clave.
Entonces estamos delegando en el motor la responsabilidad de encriptar con los riesgos de que si a algún
hacker tiene las claves para desencriptar estos datos los pueda hacer.
Por eso hay que andar con mucho cuidado y es preferible usar nuestra contraseña nuestra clave aunque
la tengamos alojada en un servidor tipo cloud en la nube como variable de entorno para que nadie la
pueda hackear y no que esté en nuestro programa literalmente escrita esta variable.
Pero lo que vamos a hacer ahora por ejemplo lo vamos a usar el compresor esta función compres no me
pide dos argumentos me pide simplemente uno que es lo que voy a comprimir le podemos a Podemos colocar
comprimido.
El resultado está comprimido y vamos a decir
productos muy bien aquí tenemos nuestro nuestros datos totalmente encriptados y estos datos no tienen
nada que ver con la encriptación que hemos hecho antes.
De hecho hasta podemos jugar con las funciones y colocarlas una al lado de la otra para comparar lo
que vamos a hacer ahora es aprender la contraparte la contraparte sería el jan compra y la compres tiene
por parametro el campo el campo que nosotros hemos encriptado previamente.
Todo esto ahora que estamos haciendo en el aire que no está grabado en la base de datos.
Ustedes podrían grabar en la base de datos información encriptada sea datos de tarjeta de crédito datos
propios de la paz.
Ustedes pueden usar la función que quiera.
Obviamente hay algunas que son mejores como la MD5 que es un método de compresión de una sola vía una
vez que nosotros convertimos nuestros datos en MD5 no hay forma de desencriptar así como quedaron van
grabados en la base de datos generalmente se usa con las Pacuare con las contraseñas de los usuarios
y entonces eran compras.
Yo voy a tomar de parámetro la compresión de mi campo Descripción.
Entonces aquí vamos a poner y si todo sale como espero lo que me va a mostrar es una columna llamada
resultado con todas las descripciones totalmente legibles vamos a ejecutar y vamos a tener nuestras
descripciones en el formato original.
Por qué.
Porque usé un compresor que primero ha comprimido encriptado la descripción y luego la revertidos muy
bien lo que vamos a ver ahora.
Nosotros habíamos hecho me habíamos usado la recuerdan la función con Cat la función con Cat dijimos
que era muy útil cuando nosotros tenemos que hacer un link por ejemplo Prot descripción y color.
Si yo corro esto ahora y le pongo así como un perdón es una palabra es una palabra clave y la estoy
usando hoy descorre muy bien vamos a correr esto y lo que haces me junta el color y la descripción.
Inclusive muchas veces sin dejar un espacio en el medio que es lo que vamos a hacer ahora vamos a usar
una nueva función esto lo hemos visto en el caso de Lykke pero qué pasa si yo quiero realmente traerme
todo el resultado de una concatenación como puede ser la calle de la dirección el número el piso el
departamento pero no quiero tomarme el trabajo de tener que concatenar así con un espacio en el medio
para que lo que venga sea legible.
Hay una función derivada del contacto con Cat perdón que es con Cat WBC que me permite definir primero
un separador.
Le puedo decir que el separador va a hacer espacio y luego voy a hacer esto por ejemplo y voy a que
puede ser producto precio y vamos a concatenar.
Y aquí tenemos tipo taller la descripción un espacio en el medio el color otro espacio en el medio y
el precio.
En definitiva la única variante es que aquí el primer parámetro que voy a tener que ingresar es el separador.
Si yo quisiera colocarlo para que sea más visible colocar un signo de admiración si yo corro esto van
a ver que entre la descripción y el color hay signos de admiración.
Aquí hay dos juntos porque por qué este producto no tiene color entonces el color lo deja vacío pero
se le agrega un separador que es el signo de admiración.
Muy bien esto es el con Cat WBC y lo que vamos a ver ahora es la función con Bert que me permite convertir
básicamente para lo que se usa es para convertir tipos de datos y yo quiero pasar un número que está
de tipo in a un tipo log.
En definitiva o Beguin o se usa mucho en las fechas.
Vamos a ver un ejemplo para convertir una fecha cuando ustedes están en un sistema donde la fecha no
les viene en formato fecha sino que ustedes quieren grabarla con formato fecha en la base de datos.
Ustedes pueden tener por ejemplo dentro de ver.
Vamos a hacer un ejemplo lo vamos a poner en realidad va con comilla doble comilla doble.
Le vamos a decir que el 2017 vamos a hacerlo más moderno porque en realidad estamos en el 2020 2020
Cero 1:18 y esto lo vamos a convertir a fecha.
Ahora vamos a ver que visualmente no nos damos cuenta si es una strict o es un campo fecha pero realmente
lo ha convertido en un tipo de dato fecha y si queremos grabarlo en un insert en nuestra base de datos
en nuestros campos de tipo Jaitt vamos a tener que usar un conversor para esto sirve.
Se puede hacer también por ejemplo para oras puedo poner las ocho 25. con cero segundos y en lugar de
daiteke puedo decir que estoy y aquí puedo poner que es la hora.
Muy bien si ejecuto esto me ejecutã y a todo le ponen la misma hora.
Por qué me repite tantas veces porque en realidad estoy haciendo productos entonces por cada registro
de productos me está agregando en la columna orã que es lo único que está mostrando yo aquí podría colocar
el PRO Deivid no tiene mucho sentido pero para que vean que es diferente en todos los registros esto
es lo que está haciendo.
Entonces estas funciones nos permiten darle mucha más potencia a nuestra sentencia Cele porque estas
funciones ustedes las pueden utilizar tanto en la parte de Select como en la parte de wer.
Yo puedo hacer una selección de campos normales donde Gower y puedo hacer las conversiones.
Puedo hacer por supuesto el Aday para sumarle una fecha un intervalo a una fecha puedo usar el Lain
cuando quiero que me traiga todos los productos juegar vamos a ser un ejemplo vamos a sacar esto para
que ustedes vean como funciona.
Vamos a colocar un asterisco cuando por ejemplo el PROT descripción y aquí vamos a hacer un Lend
cuando Prov descripción del largo o sea mayor a 20 caracteres.
Entonces yo ejecuto esto y me trae todos los registros cuya descripción supera los 20 caracteres.
Vamos a ser más exigentes me trajo 6 mil 236.
Si yo aquí colocarã aún 50 caracteres vamos a ver si trae algo solamente 28 registros.
Fíjense que esto está funcionando en nuestra sentencia en nuestra cláusula Abwehr me permite colocar
funciones y Sain son muy útiles.
Vamos a ver otra función que es el DIV que como ustedes imaginarán lo que hace es sacar la diferencia
entre una fecha y la otra.
Por ejemplo queremos saber la ladiferencia o el intervalo de fechas entre Deif y nada.
Por ejemplo
vamos a cerrar esto vamos a poner intervalo.
Vamos a decirle que obviamente si estoy usando 90 fechas de la tabla ventas vamos a sacar esto y vamos
a Argentina.
No no es.
Yo sabía que me iba a chillar con esto no hay que pasarlo como función.
No es una palabra no es una cláusula hay que pasarlo como una función y todas las funciones obviamente
requieren de paréntesis aunque no tengan ningún tipo de argumento.
Y aquí me pasa el intervalo de las ventas que yo tengo en mi tabla ventas.
Cuántos días pasaron desde esa fecha hasta el día de hoy.
Por supuesto los números más grandes son los registros más viejos.
Entonces yo quiero saber cuántos días hay entre dos fechas.
Esto obviamente nuevamente lo pueden usar aquí en la Celac o en la cláusula Wear y por ejemplo quiero
que me traiga todas las facturas que cuyo intervalo no sea superior a los 300 65 días y traer todas
las fechas de atrás del último año de ventas.
Muy bien vamos a a una última función de este capítulo me comprometo a grabar nuevos capítulos nuevos
capítulos para reforzar con muchas funciones hay muchísimas funciones que aprender así que vamos a ir
a la última y la última es la función la de dar forma del formato
me va a permitir formatear la ficha y darle la personalidad que yo quiero al resultado yo quiero mostrar
el resultado.
Por ejemplo voy a voy a colocar un ejemplo.
2015 06 15 y a esto yo le voy a colocar un por ejemplo un verbo.
Esto es un verbo donde solamente me va a traer por ejemplo el año vamos a cerrar el resultado lo vamos
a llamar vamos a quitar esto de ventas y a ese resultado solamente me devolvió el año.
Fíjense componer porcentual y griega en mayúscula metra el año de la fecha que le estoy colocando ahora
yo puedo colocar esto o puedo colocar ventas fecha para hacerlo más realista de ventas fecha que me
traiga solo el año.
Recuerden que hay funciones yo puedo usar la función IAR y va a ser lo mismo que esto pero trasforman
me permite jugar más con los resultados y lo vamos a ver ahora.
Primero vamos a ejecutar esto para que ustedes vean que funciona no solo con un literal que colocamos
a mano sino que funciona con los campos de las tablas entonces aquí me está trayendo solo el año ahora
si yo quiero darle un formato especial a esta fecha yo puedo insertar caracteres puede insertar texto
y aquí mismo puedo decirle por ejemplo vamos a colocar un signo mayor y vamos a colocar la palabra mes
y vamos a colocar aquí el por ciento.
Por ejemplo el mes es m minúscula qué es lo que me va a arrojar esto vamos a ejecutarlo y me arrojã
2018 mes cero uno fíjense que ya no estoy en un formato fecha el Daguet format me termina devolviendo
un es un campo de tipo string no de tipo fecha y esto es lo bueno.
Entonces lo que podemos hacer aquí es agregar más cosas como por ejemplo colocar entre paréntesis el
día y ejecutarlo y lo que haces me pone al día entre paréntesis el mes con un prefijo de la palabra
mes y luego el año con un separador que es el signo mayor.
Esto obviamente es un ejemplo no le encuentren el significado a este ejemplo que hemos dado ustedes
pueden usarlo para lo que ustedes quieran así que muy bien ya hemos avanzado más.
Les prometí y vamos a seguir agregando más capítulos no sólo de funciones sino de todo lo que haya quedado
afuera del curso y que sea de utilidad para ustedes los veo en el próximo capítulo.