Concatenar campos en la sentencia IN() en Oracle (SQL)

Vamos a ver un “truco” para trabajar con la sentencia IN().

Pongamos un ejemplo sencillo para ver dos formas de realizar un proceso con el mismo resultado:
Digamos que en un colegio hay dos clases con diferentes alumnos.

Clase 1 (La llamamos A)
Nombres alumnos:

  • Lucia
  • Patricia
  • Iván

Clase 2 (La llamamos B)
Nombres alumnos:

  • Sara
  • Esther
  • Rafa

Si quisiéramos obtener los nombres masculinos de las dos clases, entonces una opción sería realizarlo de la siguiente manera:

SELECT 
     nombreAlumno 
FROM 
     clase
WHERE 
     (nombreAlumno = 'Iván' AND nombreClase = 'A') OR 
     (nombreAlumno = 'Rafa' AND nombreClase = 'B')

Una de las formas que tiene Oracle para concatenar campos es ||”||, que es la que vamos a usar a continuación.

Ahora bien, para hacerlo con la sentencia de SQL IN() en Oracle se realizaría de la siguiente manera:

SELECT 
      nombreAlumno
FROM 
      clase
WHERE 
      nombreAlumno||'-'||nombreClase IN('Iván-A', 'Rafa-B')

Una forma incorrecta de usar la sentencia IN() hubiera sido incluir varias, ya que los datos podrías salir de mezclados entre los dos grupos que abarca la sentencia IN:

SELECT 
      nombreAlumno
FROM 
      clase
WHERE 
      nombreAlumno IN('Iván','Rafa') AND nombreClase IN('A', 'B')

Iván Martínez

Ingeniero Informático apasionado por el mundo del desarrollo WEB. Me gusta caminar por este mundo lleno de tecnologías y día a día aprender cosas nuevas como el doctor Frankenstein ¡dadme cosas para experimentar!

Deja un comentario

Tu dirección de correo electrónico no será publicada.