SQL - Criterios de busqueda

   
Vista:

Criterios de busqueda

Publicado por YeisonSoto (15 intervenciones) el 23/04/2013 21:18:44
Hola amigos.

Tengo una tabla de clientes con los datos basicos de los clientes

Nombre Varchar
identificacion Varchar
direccion varchar

Cada cliente tiene su identificacion

1
2
3
4
5
6
NOMBRE                         IDENTIFICACION                 DIRECCION
------------------------------ ------------------------------ ------------------------------
CARLOS ANDRES AYALA LOPEZ      12.234.678                     carrera 12 # 3b-32             
PEDRO ANTONIO LOZANO AYALA     1.123.234.678                  carrera 12 3b-32
SUAREZ  Y CIA. LDTA            5.559.957-1                    Kilometro 28 via Cali-Jamundi
CARLOS Y Hnos LTDA             25.123.678-5                   carrera 32 # 3b-32             



y nesecito hacer la busqueda por medio de la identificacion pero tienen el siguiente formato

n.nnn.nnn.nnn
nn.nnn.nnn
n.nnn.nnn-n
nn.nnn.nnn-n

Como puedo hacer que por ejemplo una persona sin tener en cuenta los puntos y guiones, introduzca 1123234678 (n.nnn.nnn.nnn) ò 251236785 (nn.nnn.nnn-n) en un parametro y me traiga el registro que corresponde a esa identificacion?

Agradezco la ayuda que puedan darme....
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

Criterios de busqueda

Publicado por leonardo_josue (880 intervenciones) el 23/04/2013 23:15:50
Hola YeisonSoto:

No nos mencionas con qué Motor de Base de Datos estás trabajando, por lo tanto resulta complicado darte una respuesta puntual. Lo que puedes hacer es reemplazar el punto (.) y el guión (-) por un vacío, es decir eliminarlos de la cadena al momento de hacer la comparación... En MySQL lo puedes hacer con la función REPLACE, haciendo un doble reemplazo, checa este script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
mysql> SELECT * FROM tabla;
+----------------------------+----------------+-------------------------------+
| nombre                     | identificacion | direccion                     |
+----------------------------+----------------+-------------------------------+
| CARLOS ANDRES AYALA LOPEZ  | 12.234.678     | carrera 12 # 3b-32            |
| PEDRO ANTONIO LOZANO AYALA | 1.123.234.678  | carrera 12 3b-32              |
| SUAREZ  Y CIA. LDTA        | 5.559.957-1    | Kilometro 28 via Cali-Jamundi |
| CARLOS Y Hnos LTDA         | 25.123.678-5   | carrera 32 # 3b-32            |
+----------------------------+----------------+-------------------------------+
4 rows in set (0.00 sec)
 
mysql> SELECT
    -> identificacion,
    -> REPLACE(REPLACE(identificacion, '-', ''), '.', '') sin_formato
    -> FROM tabla;
+----------------+-------------+
| identificacion | sin_formato |
+----------------+-------------+
| 12.234.678     | 12234678    |
| 1.123.234.678  | 1123234678  |
| 5.559.957-1    | 55599571    |
| 25.123.678-5   | 251236785   |
+----------------+-------------+
4 rows in set (0.00 sec)
 
mysql> SELECT * FROM tabla
    -> WHERE REPLACE(REPLACE(identificacion, '-', ''), '.', '') = '55599571';
+---------------------+----------------+-------------------------------+
| nombre              | identificacion | direccion                     |
+---------------------+----------------+-------------------------------+
| SUAREZ  Y CIA. LDTA | 5.559.957-1    | Kilometro 28 via Cali-Jamundi |
+---------------------+----------------+-------------------------------+
1 row in set (0.00 sec)


Es cuestión de que investigues una función semejante en el DBMS que estés utilizando.

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
1
Comentar

Criterios de busqueda

Publicado por YeisonSoto yeison.soto@hotmail.es (15 intervenciones) el 26/04/2013 23:41:26
Muchas gracias leo, tu ayuda me sirvio mucho, por cierto estoy trabajando con Oracle...
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