Sitio donde se podra encontrar información importante y de ayuda en temas de informática y tecnología, con énfasis en programación en .NET
lunes, 23 de julio de 2012
Función para concatenar campos
Algunas veces es necesario combinar en forma conjunta (concatenar) los resultados de varios campos diferentes.
Cada base de datos brinda una forma para realizar esto:
Informix: ||
Oracle: CONCAT(), ||
SQL Server: +
MySQL: CONCAT()
La sintaxis para CONCAT() es la siguiente: CONCAT(cad1, cad2, cad3, ...): Concatenar cad1, cad2, cad3, y cualquier otra cadena juntas.
Por favor note que la función CONCAT() de Oracle sólo permite dos argumentos – sólo dos cadenas pueden colocarse juntas al mismo tiempo utilizando esta función.
Sin embargo, es posible concatenar más de dos cadenas al mismo tiempo en Oracle utilizando '||'. Observemos algunos ejemplos.
Supongamos que tenemos la siguiente tabla:
Tabla Geography region_name store_name East Boston East New York West Los Angeles West San Diego
Ejemplo 1:
MySQL/Oracle: SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = 'Boston';
Resultado : 'EastBoston'
Ejemplo 2:
Oracle: SELECT region_name || ' ' || store_name FROM Geography WHERE store_name = 'Boston'; Resultado : 'East Boston'
Ejemplo 3: SQL Server: SELECT region_name + ' ' + store_name FROM Geography WHERE store_name = 'Boston';
Resultado : 'East Boston'
FORMATO FECHA EN ORACLE
Formatos de Fecha
La función TO_CHAR(Fechas en BD Informix
Para insertar una fecha en una consulta, se debe hacer de la siguiente forma como se ve en este ejemplo:
TO_DATE ('2012-03-01 14:28:00' ,'%Y-%m-%d %H:%M:%S' )
TO_DATE ('2012-03-01 14:28:00' ,'%Y-%m-%d %H:%M:%S' )
insert into hiepiact (acthis,actnum,acthex,actfen) values (708,'URGE',758,1,null,TO_DATE ('2012-03-01 14:28:00' ,'%Y-%m-%d %H:%M:%S' ))Esto porque informix acepta solo el formato 'YYYY-MM-DD HH:MM:SS'.
jueves, 12 de julio de 2012
Funcion para valores Nulos
Transformación de valores nulos COALESCE () , NVL() , NVL2() , ISNULL()
Devuelve la primera expresión distinta de NULL entre sus argumentos.
Esta función para la mayoria de las base de datos (Sql Server ,Oracle, …..) Devuelve la primera expresion distinta a null de sus argumentos.
SELECT Nombre, Apellido, COALESCE(Sueldo, 0) AS Sueldo,(Incremnto + COALESCE(Sueldo, 0)) AS Total
FROM Empleado;
Oracle : Trabjando con Oracle es posible usar las funciones NVL y NVL2. (NVL) es similar a la función COALESCE, pero se limita a dos argumentos. (NVL2) recibe tres argumentos, si el primer argumento es NULL, retorna el valor del segundo argumento, caso contrario retorna el valor del tercer argumento.
SELECT Nombre, Apellido, NVL(Sueldo, 0) AS Sueldo, NVL2(Sueldo, Incremento, Incremento + NVL(Sueldo, 0)) AS Total
FROM Empleado;
Sql Server : Trabajando con SQL Server puede usar la función ISNULL (), que es idéntica a las función NVL de Oracle
SELECT Nombre, Apellido, ISNULL(Sueldo, 0) AS Sueldo, (Incremento + ISNULL(Sueldo, 0)) AS Total
FROM Empleado
Informix :
Trabjando con Informix es posible usar las funciones NVL. (NVL) es similar a la función COALESCE, pero se limita a dos argumentos. Si el primer argumento es NULL, retorna el valor del segundo argumento.
SELECT Nombre, Apellido, NVL(Sueldo, 0) AS Sueldo, NVL(Sueldo, Incremento) + NVL(Sueldo, 0)) AS Total
FROM Empleado;
Funcion TRIM() en SQL Server 2008R2
SQL Server no tiene función que puede recortar espacios inicial o finales de cualquier cadena al mismo tiempo. SQL tienen LTRIM() y RTRIM() que puede recortar espacios iniciales y finales respectivamente. SQL Server 2008 también no tiene función TRIM(). Usuario puede fácilmente utilizar LTRIM() y RTRIM() juntos y simular la funcionalidad TRIM().
SELECT RTRIM(LTRIM(' Word ')) AS Answer;
Debe dar resultado sin espacios inicial o finales.Respuesta
Word
He creado tras UDF que todos los días cuando tengo a TRIM() cualquier palabra o columna.
CREATE FUNCTION dbo.TRIM(@string VARCHAR(MAX))
RETURNS VARCHAR(MAX)
BEGIN
RETURN LTRIM(RTRIM(@string))
END
GO
Ahora déjenos probar por encima de la UDF, ejecuta la siguiente declaración donde hay iniciales y espacios alrededor de palabra.
SELECT dbo.TRIM(' leading trailing ')
Devolverá la cadena en la ventana de resultado como'leading trailing'
No habrá ningún espacio a su alrededor. Si espacios adicionales son datos inútiles, cuando se insertan datos en la base de datos debe recortarse. Si hay necesitamos de espacios en los datos, pero en algunos casos deben recortarse al recuperar nos puede utilizar columnas calculadas. Leer más sobre columnas SQL SERVER – Puzzle – solución – calcula explicación de tipo de datos de columnas calculadas.
El ejemplo siguiente muestra las columnas calculadas cómo puede utilizarse para recuperar datos recortados.
USE AdventureWorks
GO
/* Create Table */
CREATE TABLE MyTable
(
ID TINYINT NOT NULL IDENTITY (1, 1),
FirstCol VARCHAR(150) NOT NULL,
TrimmedCol AS LTRIM(RTRIM(FirstCol))
) ON [PRIMARY]
GO
/* Populated Table */
INSERT INTO MyTable
([FirstCol])
SELECT ' Leading'
UNION
SELECT 'Trailing '
UNION
SELECT ' Leading and Trailing '
UNION
SELECT 'NoSpaceAround'
GO
/* SELECT Table Data */
SELECT *
FROM MyTable
GO
/* Dropping Table */
DROP TABLE MyTable
GO
Por encima de consulta demuestra que cuando recuperar datos recupera recorta datos en la columna TrimmedCol. Puede ver el resultado en la siguiente imagen.Calcula las columnas se crean ejecución tiempo y rendimiento pueden no ser óptimas si se recupera gran cantidad de datos. Algún otro tiempo veremos cómo podemos mejorar el rendimiento de columna calculada usando índice.
Suscribirse a:
Entradas (Atom)