MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Znajdź wartości, które nie zawierają liczb w SQL

Jeśli masz kolumnę w tabeli bazy danych, która zawiera dane znakowe, ale niektóre wiersze zawierają również liczby, możesz użyć następujących zapytań SQL, aby zwrócić tylko te wiersze, które nie zawierają liczb w wartości.

Ściśle mówiąc, liczby mogą być reprezentowane przez cyfry, słowa i inne symbole, ale na potrzeby tego artykułu „liczba” oznacza „cyfrę”. Więc znajdujemy wartości, które nie zawierają żadnych cyfr.

Zapytanie, którego użyjesz, będzie zależeć od Twojego DBMS.

Serwer SQL

W SQL Server możemy użyć takiego zapytania:

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

Tutaj zwracamy wszystkie wiersze, w których ProductName kolumna nie zawiera żadnych cyfr.

Wyrocznia

W Oracle możemy użyć REGEXP_LIKE() funkcja:

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

W tym przypadku dostarczamy wzorzec wyrażenia regularnego, który pasuje do wartości, których nie chcemy zwracać. Wartości są w rzeczywistości dopasowane, ale negujemy również dopasowanie, używając NOT , co oznacza, że ​​zwracane jest wszystko, co nie pasuje.

Innym sposobem na to jest użycie [:digit:] Klasa znaków POSIX:

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

MySQL

W MySQL możemy użyć NOT REGEX funkcja:

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

Inny sposób napisania tego jest taki:

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

Lub możemy użyć [:digit:] Klasa znaków POSIX:

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

MariaDB

W MariaDB możemy użyć jej implementacji NOT REGEX funkcja:

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

Inny sposób napisania tego jest taki:

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

Lub możemy użyć [:digit:] Klasa znaków POSIX:

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

PostgreSQL

Oto jak możemy to zrobić w Postgresie:

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

SQLite

W SQLite możemy to zrobić:

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

W SQLite REGEXP operator jest specjalną składnią dla REGEXP() funkcję użytkownika, więc możemy również wykonać następujące czynności:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $lub operator potoku agregacji

  2. Konfigurowanie połączenia singleton z node.js i mongo

  3. mongodb znajdź przez porównanie wartości pól

  4. Jak MongoDB umożliwia uczenie maszynowe

  5. Jak ustawić limit rozmiaru tablicy w schemacie Mongoose?