Xin lỗi, tôi đã không chắc chắn mà SQL nền tảng bạn đang nói về:
Trong MySQL:
$query = ("SELECT * FROM $db WHERE conditions AND LENGTH(col_name) = 3");
trong MSSQL
$query = ("SELECT * FROM $db WHERE conditions AND LEN(col_name) = 3");
Các LENGTH() (MySQL) hoặc hàm LEN() (MSSQL) sẽ trả về độ dài của một chuỗi trong một cột mà bạn có thể sử dụng như một điều kiện trong mệnh đề WHERE của bạn.
Sửa
Tôi biết điều này là thực sự cũ nhưng nghĩ rằng tôi muốn mở rộng câu trả lời của tôi bởi vì, như Paulo Bueno đúng chỉ ra, bạn rất có thể muốn số ký tự như trái ngược với số lượng byte. Cảm ơn Paulo.
Vì vậy, đối với MySQL có CHAR_LENGTH()
. Ví dụ sau đây nhấn mạnh sự khác biệt giữa LENGTH()
một CHAR_LENGTH()
:
CREATE TABLE words (
word VARCHAR(100)
) ENGINE INNODB DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
INSERT INTO words(word) VALUES('快樂'), ('happy'), ('hayır');
SELECT word, LENGTH(word) as num_bytes, CHAR_LENGTH(word) AS num_characters FROM words;
+--------+-----------+----------------+
| word | num_bytes | num_characters |
+--------+-----------+----------------+
| 快樂 | 6 | 2 |
| happy | 5 | 5 |
| hayır | 6 | 5 |
+--------+-----------+----------------+
Hãy cẩn thận nếu bạn đang làm việc với các nhân vật đa byte.
Nguồn
2011-07-24 14:02:37
Cú pháp MySQL cũng giống như cú pháp SQLite. Làm việc tuyệt vời cho tôi. – Jon
Trong postgres bạn có thể sử dụng "chiều dài" chức năng như trong mysql –
Hãy coi chừng! Trong bộ ký tự nhiều byte, nó có thể khác nhau. Xem [this] (http://stackoverflow.com/questions/1870937/mysql-how-to-select-data-by-string-length) –