sql >> Databáze >  >> RDS >> MariaDB

Jak získat hodnoty, které neobsahují čísla v MariaDB

Při práci s MariaDB se občas může stát, že budete potřebovat vrátit všechny řádky, které neobsahují žádná čísla.

Technicky lze čísla reprezentovat slovy a jinými symboly, ale pro tento článek „číslo“ znamená jednoduše „číslice“. Takže nacházíme hodnoty, které neobsahují žádné číselné číslice.

Příklad

Předpokládejme, že máme tabulku nazvanou Products s následujícími údaji ve svém ProductName sloupec:

SELECT ProductName 
FROM Products;

Výsledek:

+-------------------------------------+
| ProductName                         |
+-------------------------------------+
| Left Handed Screwdriver             |
| Right Handed Screwdriver            |
| Bottomless Coffee Cup               |
| Smash 2000 Sledgehammer             |
| Chainsaw (includes 3 spare fingers) |
| Bottomless Coffee Mugs (4 Pack)     |
+-------------------------------------+

Tento sloupec samozřejmě obsahuje znaková data, ale některé řádky obsahují čísla v těchto znakových datech (i když nejsou uloženy jako číselný typ).

Pomocí následujícího dotazu můžeme vrátit pouze ty řádky, které neobsahují žádné číselné číslice:

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

Výsledek:

+--------------------------+
| ProductName              |
+--------------------------+
| Left Handed Screwdriver  |
| Right Handed Screwdriver |
| Bottomless Coffee Cup    |
+--------------------------+

Podle očekávání jsou vráceny pouze ty řádky, které neobsahují čísla.

V tomto případě jsme použili NOT REGEX funkce najít všechny řádky, které odpovídají vzoru. Vzor obsahuje všechny číslice od 09 , plus jakýkoli jiný znak.

Dalo by se to napsat také takto:

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

Výsledek:

+--------------------------+
| ProductName              |
+--------------------------+
| Left Handed Screwdriver  |
| Right Handed Screwdriver |
| Bottomless Coffee Cup    |
+--------------------------+

Stejný výstup.


  1. Chyba serveru SQL 4104:Vícedílný identifikátor nelze svázat.

  2. Jak vytvořit indexy tabulek v databázích

  3. Porovnejte data v MySQL

  4. datetime2 vs smalldatetime v SQL Server:Jaký je rozdíl?