Está en la página 1de 25

Usando Transact-SQL

LABORATORIO No.4.1
Escriba una consulta con pivote

1. Abra el editor de consultas en Microsoft SQL Server Management Studio (SSMS).


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

use [AdventureWorks2016CTP3]
SELECT SalesOrderID, CustomerID, SalesPersonID
FROM Sales.SalesOrderHeader
WHERE SalesPersonID IS NOT NULL

Esta consulta representa la base del pivote. Devuelve los datos fila por fila.

3. Justo encima de esta consulta, escriba el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3]
SELECT
SalesPersonID, [29486] AS Cust1, [29487] AS Cust2, [29488] AS Cust3, [29491] AS Cust4,
[29492] AS Cust5, [29512] AS Cust6
FROM (

Esta parte de la consulta representa cómo se devolverán los datos.

4. Por último, directamente debajo de la consulta en el paso 2, escriba la consulta


siguiente:

) AS p
PIVOT
(
COUNT(SalesOrderID)
FOR CustomerID IN
(
[29486],[29487],[29488],[29491],[29492],[29512])
) AS pvt

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

ORDER BY SalesPersonID

Esta parte de la consulta especifica el operador PIVOT, lo que se agregan, y que los
clientes incluir en el conjunto de resultados.
5. La consulta final debe ser similar a la siguiente:

USE [AdventureWorks2016CTP3]
SELECT
SalesPersonID, [29486] AS Cust1, [29487] AS Cust2, [29488] AS Cust3, [29491] AS Cust4,
[29492] AS Cust5, [29512] AS Cust6
FROM (
SELECT SalesOrderID, CustomerID, SalesPersonID FROM Sales.SalesOrderHeader
WHERE SalesPersonID IS NOT NULL

) AS p
PIVOT
(
COUNT(SalesOrderID)
FOR CustomerID IN
(
[29486],[29487],[29488],[29491],[29492],[29512])
) AS pvt
ORDER BY SalesPersonID

6. Ejecutar la consulta y devolverá los siguientes resultados de pivote.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

Como puede ver, cada fila agrega para mostrar una lista distinta de los vendedores y
cuántas ventas se han hecho a cada cliente en la lista de pivote.

Escribe una consulta UNPIVOT

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:
USE [AdventureWorks2016CTP3]
GO
IF(OBJECT_ID('dbo.unPvt')) IS NOT NULL
DROP TABLE dbo.unPvt
GO
CREATE TABLE dbo.unPvt
(
SalesPersonID int,
Cust1 int,
Cust2 int,
Cust3 int,
Cust4 int,
Cust5 int,
Cust6 int

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

)
GO
INSERT INTO dbo.unPvt
(
SalesPersonID, Cust1, Cust2, Cust3, Cust4, Cust5, Cust6
)
VALUES
(274, 5, 6, 4, 2, 6, 7),
(275, 1, 7, 2, 3, 6, 8),
(276, 0, 2, 8, 9, 6, 3),
(277, 6, 3, 1, 7, 6, 1),
(278, 5, 4, 9, 0, 2, 0),
(279, 2, 1, 0, 1, 8, 9)
GO

Esto no es realmente parte de la consulta UNPIVOT, pero se trata de datos que debe ser
proporcionado con el fin de mostrar un ejemplo práctico.

3. Abra una nueva ventana de consulta en SSMS y escriba lo siguiente:

SELECT SalesPersonID, Cust1, Cust2, Cust3, Cust4, Cust5, Cust6 FROM unPvt

4. Justo encima de esta consulta, escriba lo siguiente:

USE [AdventureWorks2016CTP3]
GO
SELECT SalesPersonID, Customer, Sales
FROM
(

Esto representa los datos que se devuelven cuando se ejecuta la consulta final.

5. Directamente debajo de la declaración en el paso 2, escriba lo siguiente:


) up
UNPIVOT

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

(
Sales FOR Customer IN
(
Cust1, Cust2, Cust3, Cust4, Cust5, Cust6
)
)AS unpvt;
GO
Esta parte de la consulta incluye el operador UNPIVOT que, en lugar de agregar los datos
como pivote, incluye una lista de los clientes que se incluirán en el conjunto de resultados
de fila por fila.

6. La consulta final será similar al siguiente:

USE [AdventureWorks2016CTP3]
GO
SELECT SalesPersonID, Customer, Sales
FROM
(
SELECT SalesPersonID, Cust1, Cust2, Cust3, Cust4, Cust5, Cust6 FROM unPvt
) up
UNPIVOT
(
Sales FOR Customer IN
(
Cust1, Cust2, Cust3, Cust4, Cust5, Cust6
)
)AS unpvt;
GO

7. Ejecutar la consulta.
Como se muestra aquí, cada fila representa el número de ventas realizadas a un
cliente determinado.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

Escriba una consulta paginada

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
SELECT
ProductID,
ProductNumber,
Name AS ProductName,
ListPrice
FROM Production.Product
ORDER BY ProductID
OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

Un adicional, y probablemente el más importante, el requisito es que con este par debe ir
precedida de una cláusula ORDER BY. La columna especificada en la cláusula ORDER BY
determina el orden y qué filas se devolverán. La siguiente consulta se modifica
ligeramente, de modo que, en lugar de comenzar en la primera fila, el desplazamiento se
cambia a 10:

USE [AdventureWorks2016CTP3];
SELECT
ProductID,
ProductNumber,
Name AS ProductName,
ListPrice
FROM Production.Product
ORDER BY ProductID
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY

Si OFFSET cambia, observe que se devuelve un nuevo conjunto de productos.

Escriba una consulta con una expresión constante

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:
USE [AdventureWorks2016CTP3];
SELECT (SubTotal+TaxAmt)*1.05 AS TotalDue
FROM SaleS.SalesOrderHeader

Escriba una consulta que utiliza una variable

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
DECLARE @ProductID int = 1;

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

Esta parte del código declara y asigna un valor a la variable ProductID.

3. En el editor de consultas, directamente debajo de la declaración que hizo en el paso 2,


introduzca el siguiente código de T-SQL y ejecutar la consulta:
SELECT
ProductID,
ProductNumber,
Name AS ProductName
FROM Production.Product
WHERE ProductID = @ProductID

Esta parte del código selecciona información del producto con una igualdad cláusula
WHERE utilizando la variable como el valor de filtro.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

LABORATORIO No.4.2
Inserte una fila en una tabla mediante la instrucción INSERT INTO

1. Abra el editor de consultas en Microsoft SQL Server Management Studio (SSMS).


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
INSERT INTO HumanResources.Department(Name, GroupName, ModifiedDate)
VALUES('Payroll', 'Executive General and Administration', '6/12/2017');

No todas las columnas de la tabla tienen que aparecer en la instrucción INSERT. Debe
especificar un valor en la cláusula VALUES para todas las columnas que se han
enumerado. En la consulta anterior, DepartmentID fue omitido de la lista de columnas.
La ejecución de la siguiente consulta se mostrará la nueva fila:

USE [AdventureWorks2016CTP3];
SELECT
DepartmentID, Name, GroupName, ModifiedDate
FROM HumanResources.Department
ORDER BY DepartmentID DESC;

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

Desde DepartmentID es una columna de identidad, un valor se inserta automáticamente


en la columna. Si desea insertar un valor en una columna de identidad, puede utilizar la
instrucción SET IDENTITY_INSERT. Al insertar en una columna de identidad, debe
enumerar explícitamente cada columna de la lista de columnas.

Insertar datos en una columna de identidad utilizando la instrucción INSERT INTO

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
SET IDENTITY_INSERT HumanResources.Department ON
INSERT INTO HumanResources.Department(DepartmentID, Name, GroupName, ModifiedDate)
VALUES(18, 'International Marketing', 'Sales and Marketing', '5/26/2017');
SET IDENTITY_INSERT HumanResources.Department OFF

Tanto de los enfoques antes mencionados insertar una única fila. Mediante el aprovechamiento de la
cláusula VALUES, puede insertar varias filas en una tabla con una sola sentencia.
Insertar varias filas en una tabla mediante la instrucción INSERT INTO

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
INSERT INTO HumanResources.Department
VALUES
('International Sales', 'Sales and Marketing', '5/26/2017'),
('Media Control', 'Quality Assurance', '5/26/2017')

En lugar de escribir una sola sentencia INSERT para cada fila, puede proporcionar una lista
separada por comas de los valores para cada fila en la cláusula VALUES. La siguiente figura
ilustra el resultado de la inserción de varias filas.

Además de utilizar la cláusula VALUES para insertar varias filas, puede insertar varias filas de una
tabla existente en otra tabla utilizando una sentencia SELECT.

Inserte los datos mediante una instrucción SELECT

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

INSERT INTO HumanResources.Department(Name, GroupName, ModifiedDate)


SELECT
Name+' USA', GroupName, ModifiedDate
FROM HumanResources.Department
WHERE DepartmentID IN (20, 19)

Insertar datos en una tabla utilizando una sentencia SELECT INTO

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
SELECT
DepartmentID, Name, GroupName, ModifiedDate
INTO dbo.Department
FROM HumanResources.Department

La nueva tabla puede tener características similares a las del esquema de la tabla que
actúa como fuente. Sin embargo, la columna longitudes, tanto de cadena y numérico
puede cambiar, y las claves, índices y restricciones no se creará en la nueva tabla. Por lo
tanto, se debe evitar el uso de SELECT INTO una tabla permanente.

Actualización de una sola fila

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
UPDATE HumanResources.Department
SET Name = Name +' Europe'
WHERE DepartmentID = 19

Esta instrucción UPDATE utiliza una expresión para añadir Europa a la columna Nombre
para una sola fila en la tabla de Departamento.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

Como medida de precaución, se debe añadir un filtro adicional a la cláusula WHERE para
asegurar que la instrucción UPDATE no es repetible. En otras palabras, si se ejecutó la
consulta accidentalmente dos veces, no tendría ningún efecto sobre los datos. Esto es
especialmente importante cuando se realiza una concatenación o un cambio matemático.
La consulta siguiente muestra cómo lograr esto:

USE [AdventureWorks2016CTP3];
UPDATE HumanResources.Department
SET Name = Name +' Europe'
WHERE DepartmentID = 19
AND NAME NOT LIKE '% Europe'

El nuevo filtro que utiliza LIKE asegura que, si vuelve a ejecutar la consulta, no tendrá
ningún efecto sobre los datos que hubiera actualizado previamente.

Actualizar filas al hacer referencia a varias tablas

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
UPDATE Production.Product

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

SET ListPrice = p.ListPrice * 1.05


FROM Production.Product p
INNER JOIN Production.ProductSubcategory ps
ON p.ProductSubcategoryID = ps.ProductSubcategoryID
WHERE
ps.Name = 'Socks'
La consulta anterior utiliza la tabla Production.ProductSubcategory para limitar el número
de filas actualizadas sólo a aquellos que están incluidos en la subcategoría Socks. El
ListPrice para cada fila que se encuentra en este subconjunto se incrementa en un 5 por
ciento.

Utilice DELETE para eliminar una sola fila

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
DELETE FROM HumanResources.Department
WHERE DepartmentID = 22

Eliminar filas al hacer referencia a varias tablas

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
DELETE FROM HumanResources.Department
FROM HumanResources.Department d
LEFT OUTER JOIN HumanResources.EmployeeDepartmentHistory ed
ON d.DepartmentID = ed.DepartmentID
WHERE ed.DepartmentID IS NULL

En la consulta anterior, la tabla HumanResources.EmployeeDepartmentHistory se utiliza


para identificar a los departamentos en la tabla HumanResources.Department que no

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

están asociados con ninguna fila en la tabla referenciada. Acoplamiento que LEFT OUTER
JOIN de referencia con la cláusula WHERE asegura que sólo se eliminan las filas objetivo.

Utilice TRUNCATE para borrar todas las filas

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
TRUNCATE TABLE dbo.Department
Recuerde que la sentencia TRUNCATE elimina todas las filas de la tabla de referencia.
Antes de ejecutar esta sentencia, debe asegurarse de que esto es exactamente lo que
piensa hacer. Una vez que se ejecuta la sentencia, se eliminarán todos los datos.

Utilizar MERGE para insertar y actualizar datos

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:
USE [AdventureWorks2016CTP3];
MERGE dbo.Department destination
USING HumanResources.Department source
ON destination.Name = source.Name
WHEN MATCHED THEN
UPDATE
SET destination.Name = source.Name,
destination.GroupName = source.GroupName,
destination.ModifiedDate = source.ModifiedDate
WHEN NOT MATCHED BY TARGET THEN
INSERT (Name, GroupName, ModifiedDate)
VALUES (source.Name, source.GroupName, source.ModifiedDate);

En la consulta anterior, la tabla dbo.Department es la tabla de destino y se sea actualizado


o insertado dentro. La tabla HumanResources.Department es la tabla de origen y

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

proporcionará los datos a la tabla de destino. Similar a JOIN, la palabra clave ON se utiliza
para realizar la relación entre las dos tablas. En otras palabras, si hay una coincidencia
entre los dos valores de cada tabla (cuando coinciden), a continuación, actualizar las filas.
Si no hay una relación (Si la alineación no), a continuación, insertar las filas.

Salida de los resultados de una instrucción INSERT

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
INSERT INTO HumanResources.Department
OUTPUT inserted.DepartmentID, inserted.Name, inserted.GroupName, inserted.
ModifiedDate
VALUES('International Marketing', 'Sales and Marketing', '5/26/2017');

La instrucción de salida simplemente devuelve las filas afectadas por la entrada para el
cliente. Para dar salida a los datos de una inserción, que hacen referencia a un nombre de
tabla lógica insertada. Esta tabla existe dentro del ámbito de la consulta, y los datos sólo
se pueden acceder a continuación.

Salida de los resultados de una instrucción UPDATE

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
UPDATE HumanResources.Department
SET Name = Name +' Europe'
OUTPUT
deleted.Name AS OldName,
inserted.Name AS UpdateValue

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

WHERE DepartmentID = 25

Con la salida de datos de una actualización, usted tendrá acceso no sólo a la tabla inserted
lógica, sino también a una tabla deleted. La tabla deleted contiene los valores anteriores a
la actualización y la tabla inserted contiene los valores después de la actualización.

Como se mencionó anteriormente, el uso típico de la cláusula OUTPUT es auditar cambios


en los datos. Más de las veces, las empresas requieren que las aplicaciones de
seguimiento de las eliminaciones en sus bases de datos. Al tomar ventaja de la cláusula
OUTPUT, se puede implementar un mecanismo que hace precisamente eso.

Introduzca los datos de salida en una tabla

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE AdventureWorks2017;
GO
CREATE TABLE dbo.Department_Audit
(
DepartmentID int NOT NULL,
Name nvarchar(50) NOT NULL,
GroupName nvarchar(50) NOT NULL,
DeletedDate datetime NOT NULL
CONSTRAINT DF_Department_Audit_DeletedDate_Today DEFAULT(GETDATE()))

3. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

USE [AdventureWorks2016CTP3];
DELETE FROM dbo.Department
OUTPUT deleted.Departmentid, deleted.Name, deleted.GroupName
INTO dbo.Department_Audit(DepartmentID, Name, GroupName)
WHERE DepartmentID = 16

La consulta anterior se elimina una fila de la tabla de Departamento y también inserta el


contenido de la fila eliminada en una tabla de auditoría.

4. Para ver el contenido actual de la tabla de auditoría, ejecute la siguiente consulta:

USE [AdventureWorks2016CTP3];
SELECT *
FROM dbo.Department_Audit

Verá exactamente los datos que la tabla Departamento contenía antes de la eliminación.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

LABORATORIO No.4.3
Retornando valores de fecha y hora

1. Abra el editor de consultas en Microsoft SQL Server Management Studio (SSMS).


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

SELECT GETDATE() AS GETDATE, SYSDATETIME() AS SYSDATETIME;

3. El conjunto de resultados será un solo valor de fecha y hora igual a la fecha y hora que
ejecutó la consulta.

Puede notar de inmediato que la precisión de los valores es diferente. La función


GETDATE() devuelve un tipo de datos DATETIME, y la función SYSDATETIME devuelve un
datetime2 (7). El último de la dos es un valor más preciso, que es la razón por la que se ve
más números después de la coma decimal final.

Retorno de partes de valores de datos y tiempo.

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

SELECT
DAY(GETDATE()) AS DAY,
MONTH(GETDATE()) AS MONTH,
YEAR(GETDATE()) AS YEAR,

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

DATENAME(WEEKDAY, GETDATE()) AS DATENAMEWeekDay,


DATEPART(M, GETDATE()) AS DATEPART,
DATEPART(WEEKDAY, GETDATE()) AS DatePartWeekDay,
DATENAME(MONTH, GETDATE()) AS DateNameMonth

La siguiente imagen muestra el conjunto de resultados de la consulta.

Utilice la función escalar DATEFROMPARTS

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

SELECT
DATEFROMPARTS ( 1972, 5, 26) AS DATEFROMPARTS,
DATETIME2FROMPARTS ( 1972, 5, 26, 7, 14, 16, 10, 3 ) AS DATETIME2FROMPARTS,
DATETIMEFROMPARTS ( 1972, 5, 26, 7, 14, 16, 10) AS DATETIMEFROMPARTS,
DATETIMEOFFSETFROMPARTS ( 1972, 5, 26, 7, 14, 16, 10, 12, 0, 3 ) AS DATETIMEOFFSETFROMPARTS,
SMALLDATETIMEFROMPARTS ( 1972, 5, 26, 7, 14) SMALLDATETIMEFROMPARTS,
TIMEFROMPARTS(7, 14, 16, 10, 3) TIMEFROMPARTS

El resultado de esta consulta se parece a la siguiente imagen.

Ahora se puede producir valores de variables de fecha y hora de los diferentes niveles de
precisión mediante el uso de funciones incorporadas en lugar de escribir código
personalizado T-SQL.

Realizar cálculos de fecha y validaciones

1. Abra el Editor de consultas de SSMS.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

SELECT
DATEDIFF(dd, GETDATE(), '5/26/2013') AS DaysUntilMyBirthday,
DATEADD(y, 1, GETDATE()) AS DateAdd,
EOMONTH(GETDATE()) AS EOMonth, --Nuevo to SQL Server 2017
ISDATE(GETDATE()) AS IsValidDate,
ISDATE('13/1/2122') AS InvalidDate

Convertir datos utilizando CAST

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

USE [AdventureWorks2016CTP3];
SELECT TOP(10)
SalesOrderNumber,
TotalDue,
CAST(TotalDue AS decimal(10,2)) AS TotalDueCast,
OrderDate,
CAST(OrderDate AS DATE) AS OrderDateCast
FROM Sales.SalesOrderHeader;

La siguiente imagen muestra el conjunto de resultados de la consulta anterior.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

En la consulta anterior, los valores originales de la columna de la TotalDue se


almacenaron, lo que permite hasta cuatro números después de la coma decimal.
Mediante el uso de la función CAST, puede cambiar el número de decimales devuelto
como se muestra en la columna de la TotalDueCast. Además, en lugar de devolver un
valor de fecha y hora para la fecha del pedido, puede utilizar la función CAST para
devolver sólo el valor de la fecha, que se puede ver en la columna de la OrderDateCast.

Convertir datos utilizando CONVERT

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

SELECT
CONVERT(VARCHAR(20), GETDATE()) AS [Default],
CONVERT(VARCHAR(20), GETDATE(), 100) AS DefaultWithStyle,
CONVERT(VARCHAR(10), GETDATE(), 103) AS BritishFrenchStyle,
CONVERT(VARCHAR(8), GETDATE(), 105) AS ItalianStyle,
CONVERT(VARCHAR(8), GETDATE(), 112) AS ISOStyle,
CONVERT(VARCHAR(15), CAST('111111.22' AS MONEY), 1) AS MoneyWithCommas

Lo que usted debe notar inmediatamente es que la función CONVERT acepta tres
argumentos. El primer argumento es el tipo de datos de destino o el tipo de fecha que
desea convertir un valor dado a. El segundo argumento es el valor real que se convertirá, y

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

el argumento final es el estilo. Este último argumento es opcional, y si no se proporciona,


SQL Server utilizará los valores por defecto. La imagen siguiente muestra los resultados de
la ejecución de la consulta anterior:

Las primeras cinco columnas representan las conversiones de fecha a los diferentes estilos
de los países. La última columna muestra el uso de la función CONVERT para agregar
puntos a un valor que es del tipo de datos money. En la consulta, la función CAST se utiliza
en la última línea de código para convertir la cadena en el dinero, y luego la función
CONVERT se utiliza para convertir ese valor a volver a una cadena con comas.

Convertir fechas utilizando las nuevas funciones de SQL Server 2017

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

SELECT
TRY_CAST('PATRICK' AS INT) TryCast,
TRY_CONVERT(DATETIME, '13/2/2999', 112) AS TryConvert,
PARSE('Saturday, 26 May 2017' AS DATETIME USING 'en-US') AS Parse,
TRY_PARSE('Patricks BirthDay' AS DATETIME USING 'en-US') AS TryParse

La siguiente figura ilustra el uso de todas las nuevas funciones.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

En lugar de suspender la ejecución de la consulta, las nuevas funciones TRY proporcionan


un enfoque más elegante en la devolución de los valores NULL.

Utilizar funciones de cadena de SQL Server

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

SELECT 'LEBLANC '+', '+' PATRICK' RawValues,


RTRIM('LEBLANC ')+', '+LTRIM(' PATRICK') TrimValue,
LEFT('PatrickDTomorr', 7) [Left],
RIGHT('DTomorrLeBlanc', 7) [Right],
SUBSTRING('DTomorrPatrick',8,LEN('DTomorrPatrick')) [SubString],
'12/'+CAST(1 AS VARCHAR)+'/2017' WithoutConcat,
CONCAT('12/',1,'/2017') WithConcat

La imagen siguiente muestra el uso de varias funciones de cadena.

Utilizando las funciones CHOOSE e IIF

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código de T-SQL:

declare @choosevar int = 3


SELECT
CHOOSE(@choosevar, 'ONE', 'TWO', 'PATRICK', 'THREE') [Choose],
IIF(DATENAME(MONTH, GETDATE()) = 'April', 'The 4th is this month', 'No Fireworks') AS [IIF]
3. La imagen siguiente muestra los resultados de la consulta anterior:

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Usando Transact-SQL

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co

También podría gustarte