sql >> Database >  >> NoSQL >> MongoDB

Vind waarden die geen getallen bevatten in SQL

Als u een kolom in een databasetabel hebt die tekengegevens bevat, maar sommige rijen ook getallen bevatten, kunt u de volgende SQL-query's gebruiken om alleen die rijen te retourneren die geen getallen in de waarde bevatten.

Strikt genomen kunnen getallen worden weergegeven door numerieke cijfers, woorden en andere symbolen, maar voor de toepassing van dit artikel betekent "getal" "numeriek cijfer". We vinden dus waarden die geen numerieke cijfers bevatten.

De query die u gebruikt, is afhankelijk van uw DBMS.

SQL-server

In SQL Server kunnen we een query als deze gebruiken:

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

Hier retourneren we alle rijen waar de ProductName kolom bevat geen numerieke cijfers.

Oracle

In Oracle kunnen we de REGEXP_LIKE() . gebruiken functie:

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

In dit geval bieden we een patroon voor reguliere expressies dat overeenkomt met de waarden die we niet willen retourneren. De waarden komen in feite overeen, maar we ontkrachten de overeenkomst ook door NOT te gebruiken , wat betekent dat alles wat niet overeenkomt wordt geretourneerd.

Een andere manier om dit te doen is door de [:digit:] . te gebruiken POSIX-tekenklasse:

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

MySQL

In MySQL kunnen we de NOT REGEX . gebruiken functie:

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

Een andere manier om het te schrijven is als volgt:

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

Of we kunnen de [:digit:] . gebruiken POSIX-tekenklasse:

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

MariaDB

In MariaDB kunnen we de implementatie van de NOT REGEX gebruiken functie:

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

Een andere manier om het te schrijven is als volgt:

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

Of we kunnen de [:digit:] . gebruiken POSIX-tekenklasse:

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

PostgreSQL

Hier is hoe we het kunnen doen in Postgres:

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

SQLite

In SQLite kunnen we dit doen:

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

In SQLite, de REGEXP operator is een speciale syntaxis voor de REGEXP() gebruikersfunctie, dus we kunnen ook het volgende doen:

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

  1. Mongo Triple Samengestelde Index

  2. problemen om verbinding te maken met redis om bij meerdere worker-kues te passen

  3. Hoe kom ik aan de objectID nadat ik een object in Mongoose heb opgeslagen?

  4. Implementeer ik het serialiseren en deserialiseren van NodesJS + Passport + RedisStore?