MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Finden Sie Werte, die keine Zahlen in SQL enthalten

Wenn Sie eine Spalte in einer Datenbanktabelle haben, die Zeichendaten enthält, aber einige Zeilen auch Zahlen enthalten, können Sie die folgenden SQL-Abfragen verwenden, um nur die Zeilen zurückzugeben, die keine Zahlen im Wert enthalten.

Genau genommen können Zahlen durch Ziffern, Wörter und andere Symbole dargestellt werden, aber für die Zwecke dieses Artikels bedeutet „Zahl“ „Ziffer“. Wir finden also Werte, die keine Ziffern enthalten.

Die von Ihnen verwendete Abfrage hängt von Ihrem DBMS ab.

SQL-Server

In SQL Server können wir eine Abfrage wie diese verwenden:

SELECT ProductName 
FROM Products
WHERE ProductName NOT LIKE '%[0-9]%';

Hier geben wir alle Zeilen zurück, in denen der ProductName Spalte enthält keine Ziffern.

Orakel

In Oracle können wir REGEXP_LIKE() verwenden Funktion:

SELECT ProductName
FROM Products 
WHERE NOT REGEXP_LIKE(ProductName, '[0-9]+');

In diesem Fall stellen wir ein reguläres Ausdrucksmuster bereit, das den Werten entspricht, die nicht zurückgegeben werden sollen. Die Werte werden tatsächlich abgeglichen, aber wir negieren die Übereinstimmung auch, indem wir NOT verwenden , was bedeutet, dass alles zurückgegeben wird, was nicht übereinstimmt.

Eine andere Möglichkeit ist die Verwendung von [:digit:] POSIX-Zeichenklasse:

SELECT ProductName
FROM Products 
WHERE NOT REGEXP_LIKE(ProductName, '[[:digit:]]');

MySQL

In MySQL können wir den NOT REGEX verwenden Funktion:

SELECT ProductName 
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';

Eine andere Möglichkeit, es zu schreiben, ist wie folgt:

SELECT ProductName 
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');

Oder wir können den [:digit:] verwenden POSIX-Zeichenklasse:

SELECT ProductName 
FROM Products
WHERE NOT (ProductName REGEXP '[[:digit:]]');

MariaDB

In MariaDB können wir die Implementierung von NOT REGEX verwenden Funktion:

SELECT ProductName 
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';

Eine andere Möglichkeit, es zu schreiben, ist wie folgt:

SELECT ProductName 
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');

Oder wir können den [:digit:] verwenden POSIX-Zeichenklasse:

SELECT ProductName 
FROM Products
WHERE NOT (ProductName REGEXP '[[:digit:]]');

PostgreSQL

So können wir es in Postgres machen:

SELECT ProductName 
FROM Products
WHERE ProductName !~ '[0-9]+';

SQLite

In SQLite können wir dies tun:

SELECT ProductName 
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';

In SQLite der REGEXP Operator ist eine spezielle Syntax für REGEXP() Benutzerfunktion, sodass wir auch Folgendes tun können:

SELECT ProductName 
FROM Products
WHERE NOT REGEXP('[0-9]+', ProductName);