SQL - Clausula LIKE

   
Vista:

Clausula LIKE

Publicado por ElPrincipiante (1 intervención) el 14/11/2011 18:46:54
Hola, que tal

quiero filtrar de una tabla los registros que cumplan con ésta condición en el campoX
(el campoX tiene un largo de 20 posiciones)

Necesito los registros que en los primeros 14 lugares tengan 0 (cero)
los siguientes 3 lugares tengan letra
y los últimos 3 números
por ejemplo asi.....: '00000000000000WXT145'


SELECT * FROM TablaX
WHERE campoX LIKE '00000000000000???###'

Desde ya muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Clausula LIKE

Publicado por leonardo_josue (877 intervenciones) el 14/11/2011 19:06:04
Hola ElPrincipiante:

Con una comparación tipo LIKE difícilmente vas a lograr una condición como la que deseas, pues no puedes utilizar like para especificar rangos (sólo números o solo letras)...

No nos mencionas con qué BD estás utilizando, pero investiga si soporta o maneja EXPRESIONES REGULARES, con estas sería mucho más fácil encontrar el patrón que deseas...

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

Si no soporta las expresiones regulares, sería entonces conveniente que utilices otras funciones, como por ejemplo SUBSTRING... la primer parte del like para comparar los 0 es correcta, pero para el caso de los siguientes 3 caracteres sería más o menos así:

1
2
3
4
5
6
where
campoX LIKE '00000000000000%' and
SUBSTRING(campoX, 15, 1) in ('A', 'B', 'C', ................., 'Z') and
......
SUBSTRING(campoX, 18, 1) in ('1', '2', '3', ................., '9')
......


Finalmente, hay algunos motores que ya poseen funciones para verificar si un campo es numérico (ISNUMERIC en SQL Server).

Como vez, opciones tienes muchas, depende mucho de con qué estás trabajando

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar