Foros aprenderaprogramar.com
Aprender a programar => De todo un poco... => Mensaje iniciado por: PATZZZAAVR en 21 de Noviembre 2014, 18:39
-
Buenas gente ¿cómo andan?
Estoy usando Java. Quisiera saber como traer de la base de datos los parámetros que envió de la forma que quiero, osea, yo tengo un JTextfield = nombre1 y otro JTextfield = nombre 2, ejemplo nombre1 = a nombre2 = j, eso envió por un método SQL que seria esto:
public static ArrayList<Cliente> consultarClienteNombre(String filtro, String filtro2)
throws Exception {
String sql = "SELECT * FROM cliente WHERE cli_nombre ILIKE '%"+filtro+"%' AND cli_nombre ILIKE '%"+filtro2+"%' ";
ControladorBD.addSql(sql);
ControladorBD.execute();
Cliente cli = null;
ArrayList<Cliente> listaCliente = new ArrayList<>();
while (ControladorBD.finRecordSet()) {
cli = new Cliente();
cli.setCodigo(ControladorBD.getInt("cli_codigo"));
cli.setNombre(ControladorBD.getString("cli_nombre"));
cli.setCedula(ControladorBD.getInt("cli_cedula"));
cli.setRuc(ControladorBD.getString("cli_ruc"));
cli.setTelefono(ControladorBD.getString("cli_telefono"));
listaCliente.add(cli);
}
return listaCliente;
}
El problema no es que no me traiga nada si no que me trae todos los registros que contengan dichas letras enviadas, yo quisiera que me traiga los registros que están en el rango de "a" hasta "j " y en orden y ahí es donde no se como hacer. Por si alguien sepa como ayudarme le agradeseria mucho.
-
Hola, tienes que hacer consultas que pueden ser:
SELECT *
FROM cliente
WHERE cli_nombre LIKE 'a%' OR
cli_nombre LIKE 'b%' OR
cli_nombre LIKE 'c%' OR
cli_nombre LIKE 'd%' OR
cli_nombre LIKE 'e%' OR
cli_nombre LIKE 'f%' OR
cli_nombre LIKE 'g%' OR
cli_nombre LIKE 'h%' OR
cli_nombre LIKE 'i%' OR
cli_nombre LIKE 'j%'
O usando expresiones regulares:
SELECT *
FROM cliente
WHERE cli_nombre REGEXP '^[a-j]';
Podrías intentarlo con between pero aquí seguramente fallaría si tuviera que entremezclar eñes por ejemplo:
SELECT *
FROM cliente
WHERE cli_nombre BETWEEN 'a%' AND 'j%'
Te recomiendo que hagas pruebas primero por si acaso.
Salu2
-
Buenas Ogramar, probe las 2 ultimas formas, con el BETWEEN no me trae nada y con el REGEXP no dice: ERROR: syntax error at or near "REGEXP", que le hago? :(
-
La sintaxis depende de la base de datos que estés usando (¿qué base de datos es?). Una forma de comprobar la sintaxis es acceder al gestor de base de datos y ejecutar directamente la consulta comprobando los resultados. Una vez tengas la sintaxis chequeada en el gestor, trasládalo al código y comprueba que obtienes los mismos resultados :D
-
Yo uso PostgreSQL