Se utilizan en el predicado para filtrar.
BETWEEN:
Sirve para establecer en que rango de valores debe estar un campo, los valores indicados en el Between se incluyen en la búsqueda .
1 2 3 4 5 6 7 8 9 10 11 |
SELECT TOP 1000 [SpecialOfferID] ,[Description] ,[DiscountPct] FROM [AdventureWorks2014].[Sales].[SpecialOffer] WHERE DiscountPct BETWEEN 0.10 AND 0.20 --Incluye los valores inicial y final. Es equivalente a: SELECT TOP 1000 [SpecialOfferID] ,[Description] ,[DiscountPct] FROM [AdventureWorks2014].[Sales].[SpecialOffer] WHERE DiscountPct>= 0.10 AND DiscountPct<= 0.20 |
Resultado:
Se puede usar para las fechas, por ejemplo
1 2 3 4 5 6 |
SELECT TOP 1000 [SpecialOfferID] ,[Description] ,[DiscountPct] ,[StartDate] FROM [AdventureWorks2014].[Sales].[SpecialOffer] WHERE StartDate BETWEEN '20110501' AND '20120413' |
Resultado:
LIKE:
No diferencia mayúsculas y minúsculas LiKE ‘FR%’ es lo mismo que LIKE ‘fr%’
-
El carácter comodín %
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
--Empleados que su trabajo acabe con WC50 SELECT TOP 4 [BusinessEntityID] ,[NationalIDNumber] ,[LoginID] ,[JobTitle] FROM [AdventureWorks2014].[HumanResources].[Employee] WHERE JobTitle LIKE '%WC50' --Empleados que su trabajo empiece por Sales SELECT TOP 4 [BusinessEntityID] ,[NationalIDNumber] ,[LoginID] ,[JobTitle] FROM [AdventureWorks2014].[HumanResources].[Employee] WHERE JobTitle LIKE 'Sales%' --Empleados que contenga en su trabajo Sales SELECT TOP 4 [BusinessEntityID] ,[NationalIDNumber] ,[LoginID] ,[JobTitle] FROM [AdventureWorks2014].[HumanResources].[Employee] WHERE JobTitle LIKE '%Sales%' |
Resultado:
Muestro los cuatro primeros.
-
El carácter comodín _
Reemplaza en su lugar cualquier carácter.
1 2 3 |
SELECT DISTINCT [CarrierTrackingNumber] FROM [AdventureWorks2014].[Sales].[SalesOrderDetail] WHERE CarrierTrackingNumber LIKE '%-4_8D-98' |
El resultado es:
F39A-4F8D-98
FD44-488D-98
-
Los [] y [^]:
Para definir cualquier conjunto de caracteres o valores, que estén o no estén (^)
Por ejemplo :
[a-d]: que el valor sea a, b, c o d
[^a-d]: que el valor no sea a, b, c o d
[a-f,0,9]: que el valor sea a, b, c, d, e, f, 0 o 9
Se puede usar para buscar caracteres especiales:
[]: para el _
[%]
1 2 3 4 5 |
--Que no empiece por F que el segundo valor sea = el siguiente un 8 o un 9, --un valor numérico - lo que sea -y dos números. SELECT DISTINCT [CarrierTrackingNumber] FROM [AdventureWorks2014].[Sales].[SalesOrderDetail] WHERE CarrierTrackingNumber LIKE '[^F]0[89][0-9]-%-[0-9][0-9]' |
El resultado:
A082-4BC8-96
B090-41C3-95
-
Clausula ESCAPE:
Para buscar algún carácter comodín en el texto.
Por ejemplo para encontrar el % en el texto se debería hacer usando ESCAPE
LIKE ‘%!%%’ ESCAPE ‘!’ : que contenga el carácter %
IN:
Para seleccionar aquellos que un campo coincida con algún valor del listado de valores.
1 2 3 4 5 6 7 8 |
SELECT TOP 10 Person.Person.BusinessEntityID, Person.Person.FirstName, Person.Person.LastName,Person.Address.City FROM Person.Address INNER JOIN Person.BusinessEntityAddress ON Person.Address.AddressID = Person.BusinessEntityAddress.AddressID INNER JOIN Person.Person ON Person.BusinessEntityAddress.BusinessEntityID = Person.Person.BusinessEntityID WHERE City IN ('Seattle', 'London', 'Beverly Hills') |
Nos devuelve aquellas personas que su ciudad sea Seattle, London o Berverly Hills, sería lo mismo que hacer OR de las distintas ciudades.
Se puede utilizar sobre una Subconsulta:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
SELECT Person.Person.BusinessEntityID, Person.Person.FirstName, Person.Person.LastName,Person.Address.City FROM Person.Address INNER JOIN Person.BusinessEntityAddress ON Person.Address.AddressID = Person.BusinessEntityAddress.AddressID INNER JOIN Person.Person ON Person.BusinessEntityAddress.BusinessEntityID = Person.Person.BusinessEntityID WHERE Person.Person.BusinessEntityID IN (SELECT Person.BusinessEntity.BusinessEntityID FROM Person.AddressType INNER JOIN Person.BusinessEntityAddress ON Person.AddressType.AddressTypeID = Person.BusinessEntityAddress.AddressTypeID INNER JOIN Person.Address ON Person.BusinessEntityAddress.AddressID = Person.Address.AddressID INNER JOIN Person.BusinessEntity ON Person.BusinessEntityAddress.BusinessEntityID = Person.BusinessEntity.BusinessEntityID WHERE (Person.AddressType.Name = N'Shipping')) |
En la subconsulta obtenemos aquellas personas que tengan dirección de envío. Y en la consulta obtenemos las personas que su identificador este en la subconsulta.
NOT:
Es común utilizarlo con los posibles filtros anteriores
NOT BETWEEN: Obtendríamos las filas que su campo no estuviese en los valores indicados en el BETWEEN
NOT LIKE: Obtendríamos las filas que no fuesen igual a la expresión indicada.
NOT IN: Obtendríamos las filas que no están en el listado