Pattern Matching in Search Conditions
Normalmente usamos LIKE con el símbolo % para indicar que nuestra búsqueda deberá coincidir hasta cierto punto.
El siguiente ejemplo
SELECT [EmployeeID]
,[LastName]
,[FirstName]
,[MiddleInitial]
,[SSN]
FROM [Employee]
WHERE LastName LIKE 'Ste%'
Retornará
EmployeeID LastName FirstName MiddleInitial SSN
----------- ------------------------------ ----------------------------- ------------- -----------
1 Stein Nidprxmvtyjnat 123-07-9951
14 Stein Qfgakkjblwfbkb 763-07-9431
27 Stein Ysscitlqms 590-07-8911
40 Stein Txhqy 437-07-8391
Pero el signo % no es el único que podemos usar. SQL server incluye los siguientes comodines.
Wildcard
|
Comportamiento
|
---|---|
%
|
Cualquier string de cero o más caracteres.
|
_
|
Un caracter solamente.
|
[ ]
|
Un rango.
|
[^]
|
Un caracter que no este dentro del rango
|
En la siguiente condición SSN deberá no iniciarse con "1", en la siguiente posición deberá existir un número comprendido entre 0 y 9, la tercera posición deberá ser un número comprendido entre 4 y 8, en las siguientes 4 posiciones podrá ser cualquier cosa, pero a continuación deberá ser solamente un "9", el resto no nos interesa.
SELECT [EmployeeID]
,[LastName]
,[FirstName]
,[MiddleInitial]
,[SSN]
FROM [Employee]
WHERE SSN LIKE '[^1][0-9][4-8]____9%'
Este será el resultado
EmployeeID LastName FirstName MiddleInitial SSN
----------- ------------------------------ ----------------------------- ------------- -----------
2 Eflin Ysgphbplbhoksy 327-07-9911
7 Makai Lnudwgnbtoyvix 467-07-9711
24 Infante Raluqhoqtkd 967-07-9031
251 Stein Nidprxmvtyjnat 247-06-9951
255 Olphant Tqbigir 857-06-9791