Autor Tema: SQL encontrar registros entre dos letras between o expresiones regulares REGEXP  (Leído 6836 veces)

PATZZZAAVR

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
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:

Código: [Seleccionar]
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.
« Última modificación: 27 de Agosto 2022, 18:27 por César Krall »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:SQL encontrar registros entre dos letras between o expresiones regulares
« Respuesta #1 en: 21 de Noviembre 2014, 21:30 »
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

PATZZZAAVR

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Re:SQL encontrar registros entre dos letras between o expresiones regulares
« Respuesta #2 en: 21 de Noviembre 2014, 21:44 »
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? :(

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:SQL encontrar registros entre dos letras between o expresiones regulares
« Respuesta #3 en: 21 de Noviembre 2014, 21:50 »
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

PATZZZAAVR

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Re:SQL encontrar registros entre dos letras between o expresiones regulares
« Respuesta #4 en: 21 de Noviembre 2014, 21:53 »
Yo uso PostgreSQL

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".