sql >> Databáze >  >> NoSQL >> MongoDB

Najděte v SQL hodnoty, které neobsahují čísla

Pokud máte v databázové tabulce sloupec, který obsahuje znaková data, ale některé řádky obsahují také čísla, můžete pomocí následujících dotazů SQL vrátit pouze ty řádky, které v hodnotě neobsahují čísla.

Přísně vzato, čísla mohou být reprezentována číselnými číslicemi, slovy a jinými symboly, ale pro účely tohoto článku „číslo“ znamená „číselná číslice“. Takže nacházíme hodnoty, které neobsahují žádné číselné číslice.

Dotaz, který použijete, bude záviset na vašem DBMS.

SQL Server

V SQL Server můžeme použít dotaz takto:

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

Zde vracíme všechny řádky, kde je ProductName sloupec neobsahuje žádné číslice.

Oracle

V Oracle můžeme použít REGEXP_LIKE() funkce:

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

V tomto případě poskytujeme vzor regulárního výrazu, který odpovídá hodnotám, které nechceme vracet. Hodnoty jsou ve skutečnosti shodné, ale shodu také negujeme pomocí NOT , což znamená, že se vrátí vše, co se neshoduje.

Dalším způsobem, jak to udělat, je použít [:digit:] Třída znaků POSIX:

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

MySQL

V MySQL můžeme použít NOT REGEX funkce:

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

Jiný způsob, jak to napsat, je tento:

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

Nebo můžeme použít [:digit:] Třída znaků POSIX:

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

MariaDB

V MariaDB můžeme použít její implementaci NOT REGEX funkce:

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

Jiný způsob, jak to napsat, je tento:

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

Nebo můžeme použít [:digit:] Třída znaků POSIX:

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

PostgreSQL

Zde je návod, jak to můžeme udělat v Postgres:

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

SQLite

V SQLite můžeme udělat toto:

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

V SQLite, REGEXP Operátor je speciální syntaxe pro REGEXP() uživatelskou funkci, takže můžeme také provést následující:

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

  1. Jak StackExchange.Redis používá více koncových bodů a připojení?

  2. Mongodb třídí bez ohledu na malá a velká písmena

  3. Predis dává 'Chyba při čtení řádku ze serveru'

  4. 20 Pozoruhodný rozdíl mezi Hadoopem 2.x a Hadoopem 3.x