Suchen Sie in PostgreSQL in Großbuchstaben gespeicherte Daten

David Mbochi Njonge 12 Oktober 2023
  1. Erstellen einer Datenbank
  2. Verbindung zur Datenbank case_database herstellen
  3. case_database mit Daten füllen
  4. Erstellen Sie eine neue Node.js-Anwendung
  5. die fehlerhafte Abfrage in Aktion
  6. die Lösung für die fehlerhafte Abfrage
Suchen Sie in PostgreSQL in Großbuchstaben gespeicherte Daten

Die meisten Anwendungen verfügen über eine Suchleiste, mit der ein Benutzer nach einem bestimmten Produkt oder einer Dienstleistung suchen kann, die von einer Anwendung angeboten werden. Die Suchleiste verwendet Schlüsselwörter, um eine Datenbank abzufragen, um ein Produkt oder eine Dienstleistung zurückzugeben, die den Suchkriterien entspricht.

In einer E-Commerce-Anwendung können wir beispielsweise den Produktnamen als Schlüsselwort verwenden, um nach einem Produkt mit diesem Namen zu suchen.

Eine häufige Gefahr bei der Verwendung von Schlüsselwörtern besteht jedoch darin, dass die Produkte möglicherweise nicht zurückgegeben werden, wenn das Schlüsselwort in Kleinbuchstaben verwendet wird, während das Schlüsselwort in der Datenbank in Großbuchstaben vorliegt.

Dieses Tutorial zeigt, wie Sie ein in Kleinbuchstaben geschriebenes Schlüsselwort verwenden, um nach Daten zu suchen, die in Großbuchstaben in einer PostgreSQL-Datenbank gespeichert wurden.

Erstellen einer Datenbank

Verwenden Sie die Tastenkombination STRG+ALT+T, um ein neues Terminalfenster zu öffnen. Verwenden Sie den unten angegebenen Befehl, um sich bei der PostgreSQL-Datenbank anzumelden.

~$ psql -U postgres -h localhost

Geben Sie das Passwort für den PostgreSQL-Server an der Passwortabfrage ein und drücken Sie die Enter auf Ihrer Tastatur. Nach erfolgreicher Anmeldung sollte das Terminalfenster wie unten gezeigt aussehen.

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=#

Beachten Sie, dass wir mit der Datenbank namens postgres verbunden sind. Um eine Datenbank für dieses Beispiel zu erstellen, kopieren Sie das folgende Fenster, fügen Sie es in das Terminalfenster ein und drücken Sie die Enter auf Ihrer Tastatur.

postgres=# create database case_database;
CREATE DATABASE

Das CREATE DATABASE zeigt, dass wir die Datenbank erfolgreich erstellt haben. Im folgenden Abschnitt erfahren Sie, wie Sie sich mit unserer neuen Datenbank verbinden.

Verbindung zur Datenbank case_database herstellen

Verwenden Sie den folgenden Befehl, um sich mit case_database zu verbinden.

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".

case_database mit Daten füllen

Um dies zu erreichen, erstellen wir eine Tabelle namens employee und füllen sie mit einigen Werten, die wir in unseren Beispielen verwenden werden. Kopieren Sie als Nächstes den folgenden Code und fügen Sie ihn in das Terminalfenster ein und drücken Sie die Enter auf Ihrer Tastatur.

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

Erstellen Sie eine neue Node.js-Anwendung

Öffnen Sie WebStorm IDEA und wählen Sie Datei -> Neu -> Projekt. Ändern Sie im sich öffnenden Fenster den Projektnamen von untitled in postgresql-lowercase im Abschnitt Location oder verwenden Sie einen beliebigen Namen.

Stellen Sie sicher, dass Sie die Node-Laufzeitumgebung installiert haben, damit die Abschnitte Node interpreter und Package manager automatisch hinzugefügt werden können. Klicken Sie abschließend auf die Schaltfläche Erstellen, um das Projekt zu generieren.

Nachdem das Projekt generiert wurde, erstellen Sie im aktuellen Ordner eine Datei mit dem Namen config.js. Kopieren Sie danach den folgenden Code und fügen Sie ihn in diese Datei ein.

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

In dieser Datei haben wir die Konfigurationsdetails hinzugefügt, die uns helfen, eine Verbindung zu unserer PostgreSQL-Datenbank namens case_database herzustellen.

Da wir mit Modulen arbeiten, müssen wir die folgende JSON-Eigenschaft zur Datei namens package.json hinzufügen.

{
  "type": "module",
}

die fehlerhafte Abfrage in Aktion

Erstellen Sie eine Datei namens query-issue.js im aktuellen Ordner und kopieren Sie den folgenden Code und fügen Sie ihn in diese Datei ein.

import connection from './config.js';

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

In dieser Datei haben wir eine async-Funktion namens findEmployeeByFirstName() erstellt, die einen einzelnen Parameter namens firstName akzeptiert.

Die Methode ist selbsterklärend. Beachten Sie jedoch, dass die Methode den angegebenen firstName verwendet, um nach einem Mitarbeiter zu suchen, der zu diesem Namen passt.

Wir haben der Funktion ein Schlüsselwort async hinzugefügt, da die Methode ein Promise zurückgibt. Das bedeutet, dass die Methode asynchron ausgeführt wird. Wir können die then()-Methode auf das zurückgegebene Promise anwenden, um die zurückgegebenen Daten weiter zu verarbeiten.

Beachten Sie, dass wir mary als Argument der Methode übergeben haben, was in Kleinbuchstaben geschrieben ist, aber ein Datensatz in unserer Datenbank in Großbuchstaben gespeichert wird.

Wenn wir diese Methode ausführen, gibt unsere Abfrage keinen Wert zurück, obwohl die Namen ähnlich sind, und es handelt sich um ein Problem, das mit der Verwendung von Daten mit unterschiedlichen Fällen verbunden ist. Verwenden Sie den folgenden Befehl, um diese Datei auszuführen.

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

Das Folgende ist die Ausgabe, die nach dem Ausführen dieser Datei zurückgegeben wird.

Result(0) []

die Lösung für die fehlerhafte Abfrage

Erstellen Sie eine Datei namens query-solution.js im aktuellen Ordner und kopieren Sie den folgenden Code und fügen Sie ihn in diese Datei ein.

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));

Dieser Codezaun ähnelt dem vorherigen. Die einzige Änderung, die wir vorgenommen haben, ist das Hinzufügen von ILIKE zur Abfrage nach der WHERE-Klausel.

Die ILIKE-Klausel ähnelt der LIKE-Klausel von SQL, die für den Musterabgleich verwendet wird. Der einzige Unterschied zwischen LIKE und ILIKE besteht darin, dass die ILIKE-Klausel die Groß- und Kleinschreibung nicht beachtet.

Da die Klausel ILIKE die Groß- und Kleinschreibung nicht beachtet, können wir jetzt den Datensatz zurückgeben, der unserem Suchschlüsselwort entspricht, in unserem Fall mary. Verwenden Sie den folgenden Befehl, um diese Datei auszuführen.

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

Das Folgende ist die Ausgabe, die nach dem Ausführen dieser Datei zurückgegeben wird.

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

Wir haben also gelernt, wie man ein in Kleinbuchstaben geschriebenes Schlüsselwort verwendet, um nach Daten zu suchen, die in PostgreSQL in Großbuchstaben gespeichert wurden.

Um dies zu realisieren, haben wir die ILIKE-Klausel verwendet, die für den Musterabgleich verwendet wird, unabhängig davon, in welcher Schreibweise die Daten gespeichert werden. Wir können auch ein Schlüsselwort in Großbuchstaben verwenden, um nach einem in Kleinbuchstaben gehaltenen Datensatz zu suchen.

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