MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tìm giá trị không chứa số trong SQL

Nếu bạn có một cột trong bảng cơ sở dữ liệu chứa dữ liệu ký tự, nhưng một số hàng cũng chứa số, bạn có thể sử dụng các truy vấn SQL sau để chỉ trả về những hàng không chứa số trong giá trị.

Nói một cách chính xác, các con số có thể được biểu thị bằng các chữ số, từ và các ký hiệu khác, nhưng với mục đích của bài viết này, “number” có nghĩa là “chữ số”. Vì vậy, chúng tôi đang tìm các giá trị không chứa bất kỳ chữ số nào.

Truy vấn bạn sử dụng sẽ phụ thuộc vào DBMS của bạn.

Máy chủ SQL

Trong SQL Server, chúng ta có thể sử dụng một truy vấn như sau:

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

Tại đây, chúng tôi trả về tất cả các hàng có ProductName cột không chứa bất kỳ chữ số nào.

Oracle

Trong Oracle, chúng ta có thể sử dụng REGEXP_LIKE() chức năng:

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

Trong trường hợp này, chúng tôi cung cấp mẫu biểu thức chính quy khớp với các giá trị mà chúng tôi không muốn được trả lại. Trên thực tế, các giá trị được khớp, nhưng chúng tôi cũng phủ định kết quả khớp bằng cách sử dụng NOT , có nghĩa là mọi thứ không khớp sẽ được trả lại.

Một cách khác để làm điều đó là sử dụng [:digit:] Lớp ký tự POSIX:

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

MySQL

Trong MySQL, chúng ta có thể sử dụng NOT REGEX chức năng:

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

Một cách khác để viết nó như thế này:

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

Hoặc chúng ta có thể sử dụng [:digit:] Lớp ký tự POSIX:

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

MariaDB

Trong MariaDB, chúng ta có thể sử dụng cách triển khai NOT REGEX của nó chức năng:

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

Một cách khác để viết nó như thế này:

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

Hoặc chúng ta có thể sử dụng [:digit:] Lớp ký tự POSIX:

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

PostgreSQL

Đây là cách chúng tôi có thể làm điều đó trong Postgres:

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

SQLite

Trong SQLite, chúng ta có thể làm điều này:

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

Trong SQLite, REGEXP toán tử là một cú pháp đặc biệt cho REGEXP() chức năng người dùng, vì vậy chúng tôi cũng có thể làm như sau:

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. Google Cloud Mongo DB:IP bên ngoài không kết nối

  2. tìm kiếm và sắp xếp toàn văn php mongodb

  3. mongodb - Tìm tài liệu có giá trị số nguyên gần nhất

  4. MongoDB $ toString

  5. mongoexport không có trường _id