Đôi khi bạn có thể cần phải tìm kiếm một bảng cơ sở dữ liệu chỉ cho những hàng có chứa ít nhất một số trong một cột nhất định.
Về mặt kỹ thuật, số có thể được biểu thị bằng từ và các ký hiệu khác, nhưng ở đây “số” có nghĩa là “chữ số”.
Dưới đây là các ví dụ về cách tìm các hàng chứa ít nhất một số trong các DBMS dựa trên SQL khác nhau.
Máy chủ SQL
Trong SQL Server, chúng ta có thể sử dụng LIKE
nhà điều hành:
SELECT ProductName
FROM Products
WHERE ProductName LIKE '%[0-9]%';
Ví dụ đó trả về ProductName
từ cột Products
bảng có ít nhất một chữ số trong ProductName
cột.
Oracle
Trong Oracle, chúng ta có thể sử dụng REGEXP_LIKE
điều kiện với mẫu biểu thức chính quy:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');
REGEXP_LIKE
của Oracle điều kiện tuân theo tiêu chuẩn biểu thức chính quy POSIX. Do đó, chúng ta có thể nhận được kết quả tương tự với mẫu sau:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');
MySQL
Trong MySQL, chúng ta có thể sử dụng REGEXP
chức năng:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Chúng tôi cũng có thể sử dụng POSIX trong MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
MariaDB
MariaDB cũng có REGEXP
, vì vậy chúng ta có thể sử dụng mã tương tự như với MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Chúng tôi cũng có thể sử dụng POSIX trong MariaDB:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
PostgreSQL
Đây là tương đương của PostgreSQL:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[0-9]+';
Và tương đương với POSIX:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[[:digit:]]';
SQLite
Trong SQLite, chúng ta có thể sử dụng mã sau:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
REGEXP
toán tử là một cú pháp đặc biệt cho REGEXP()
chức năng người dùng trong SQLite.
Do đó, chúng ta có thể sử dụng đoạn mã sau để nhận được kết quả tương tự:
SELECT ProductName
FROM Products
WHERE REGEXP('[0-9]+', ProductName);