Buscar datos guardados en mayúsculas en PostgreSQL

David Mbochi Njonge 12 octubre 2023
  1. Crear una base de datos
  2. Conexión a la base de datos case_database
  3. Rellenando case_database con datos
  4. Crear una nueva aplicación Node.js
  5. la consulta errónea en acción
  6. la solución a la consulta errónea
Buscar datos guardados en mayúsculas en PostgreSQL

La mayoría de las aplicaciones tienen una barra de búsqueda para que un usuario busque un producto o servicio específico ofrecido por una aplicación. La barra de búsqueda utiliza palabras clave para consultar una base de datos y devolver un producto o servicio que cumpla con los criterios de búsqueda.

Por ejemplo, en una aplicación de comercio electrónico, podemos usar el nombre del producto como palabra clave para buscar un producto con ese nombre.

Sin embargo, un error común al usar palabras clave es que los productos pueden no devolverse cuando la palabra clave se usa en minúsculas mientras que la palabra clave en la base de datos existe en mayúsculas.

Este tutorial muestra cómo usar una palabra clave escrita en minúsculas para buscar datos guardados en mayúsculas en una base de datos de PostgreSQL.

Crear una base de datos

Use el atajo de teclado CTRL+ALT+T para abrir una nueva ventana de terminal. Use el comando que se proporciona a continuación para iniciar sesión en la base de datos PostgreSQL.

~$ psql -U postgres -h localhost

Ingrese la contraseña para el servidor PostgreSQL en la solicitud de contraseña y presione Enter desde su teclado. Después de iniciar sesión con éxito, la ventana del terminal debería verse como se muestra a continuación.

Password for user postgres: 
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=#

Tenga en cuenta que estamos conectados a la base de datos llamada postgres. Para crear una base de datos para este ejemplo, copie y pegue la siguiente ventana en la ventana del terminal y presione Enter desde su teclado.

postgres=# create database case_database;
CREATE DATABASE

El CREATE DATABASE muestra que hemos creado la base de datos con éxito. Consulte la siguiente sección para aprender cómo conectarse a nuestra nueva base de datos.

Conexión a la base de datos case_database

Use el siguiente comando para conectarse a case_database.

postgres=# \c case_database 
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
You are now connected to database "case_database" as user "postgres".

Rellenando case_database con datos

Para lograr esto, crearemos una tabla llamada empleado y la completaremos con algunos valores que usaremos en nuestros ejemplos. A continuación, copie y pegue el siguiente código en la ventana del terminal y presione Enter desde su teclado.

case_database=# CREATE TABLE employee(
case_database(# id SERIAL UNIQUE NOT NULL,
case_database(# firstname VARCHAR(50) NOT NULL,
case_database(# lastname VARCHAR(50) NOT NULL,
case_database(# email VARCHAR(100) NOT NULL);
CREATE TABLE

case_database=# INSERT INTO employee(firstname, lastname, email)
case_database-# VALUES
case_database-# ('john', 'doe', 'john@gmail.com'),
case_database-# ('MARY', 'public', 'mary@gmail.com'),
case_database-# ('ELON', 'MUSK', 'elon@gmail.com');
INSERT 0 3

Crear una nueva aplicación Node.js

Abra WebStorm IDEA y seleccione Archivo -> Nuevo -> Proyecto. En la ventana que se abre, cambie el nombre del proyecto de sin título a postgresql-minúsculas en la sección Ubicación o use el nombre que prefiera.

Asegúrese de haber instalado el entorno de tiempo de ejecución del nodo para que las secciones Node interpreter y Package manager se puedan agregar automáticamente. Finalmente, presiona el botón Crear para generar el proyecto.

Una vez que se haya generado el proyecto, cree un archivo llamado config.js en la carpeta actual. Después de eso, copie y pegue el siguiente código en ese archivo.

import postgres from 'postgres';
const connection = postgres({
  user: 'postgres',
  host: 'localhost',
  database: 'case_database',
  password: 'postgres',
  port: 5432
})
export default connection;

En este archivo, hemos agregado los detalles de configuración que nos ayudarán a conectarnos a nuestra base de datos PostgreSQL llamada case_database.

Como estamos trabajando con módulos, debemos agregar la siguiente propiedad JSON al archivo llamado paquete.json.

{
  "type": "module",
}

la consulta errónea en acción

Cree un archivo llamado query-issue.js en la carpeta actual y copie y pegue el siguiente código en ese archivo.

import connection from './config.js';

async function findEmployeeByFirstName(firstName) {
  return connection
  `SELECT * FROM employee 
         WHERE firstName = ${firstName}`;
}
findEmployeeByFirstName('mary').then(employee => {console.log(employee)})

En este archivo, hemos creado una función async llamada findEmployeeByFirstName() que acepta un solo parámetro llamado firstName.

El método se explica por sí mismo. Sin embargo, recuerde que el método utiliza el firstName proporcionado para buscar un empleado que coincida con este nombre.

Hemos agregado una palabra clave async a la función porque el método devuelve una Promesa. Esto significa que el método se ejecuta de forma asíncrona. Podemos usar el método then() en la promesa devuelta para seguir procesando los datos devueltos.

Tenga en cuenta que hemos pasado mary como argumento del método, que está en minúsculas, pero un registro en nuestra base de datos se guarda en mayúsculas.

Cuando ejecutamos este método, nuestra consulta no devuelve ningún valor a pesar de que los nombres son similares, y es un problema asociado con el uso de datos con diferentes casos. Use el siguiente comando para ejecutar este archivo.

~/WebstormProjects/postgresql-lowercase$ node query-issue.js 

El siguiente es el resultado devuelto después de ejecutar este archivo.

Result(0) []

la solución a la consulta errónea

Cree un archivo llamado query-solution.js en la carpeta actual y copie y pegue el siguiente código en ese archivo.

import connection from './config.js';

async function findEmployeeByFirstName(firstName) {
  return connection
  `SELECT * FROM employee 
         WHERE firstName ILIKE ${firstName}`;
}
findEmployeeByFirstName('mary').then(employee => console.log(employee));

Esta valla de código es similar a la anterior. El único cambio que hemos hecho es agregar ILIKE a la consulta después de la cláusula WHERE.

La cláusula ILIKE es similar a la cláusula LIKE de SQL, que se utiliza para la coincidencia de patrones. La única diferencia entre LIKE e ILIKE es que la cláusula ILIKE no distingue entre mayúsculas y minúsculas.

Dado que la cláusula ILIKE no distingue entre mayúsculas y minúsculas, ahora podemos devolver el registro que coincida con nuestra palabra clave de búsqueda, que en nuestro caso es mary. Use el siguiente comando para ejecutar este archivo.

~/WebstormProjects/postgresql-lowercase$ node query-solution.js 

El siguiente es el resultado devuelto después de ejecutar este archivo.

Result(1) [
  {
    id: 2,
    firstname: 'MARY',
    lastname: 'public',
    email: 'mary@gmail.com'
  }
]

Entonces, hemos aprendido cómo usar una palabra clave escrita en minúsculas para buscar datos guardados en mayúsculas en PostgreSQL.

Para realizar esto, hemos utilizado la cláusula ILIKE, que se utiliza para la coincidencia de patrones independientemente del caso utilizado para guardar los datos. También podemos usar una palabra clave en mayúsculas para buscar un registro guardado en minúsculas.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub