我有大量的單詞的數據庫,但我想只選擇那些記錄字符長度等於給定數量(例如,在案例3):查詢字符長度的條件?
$query = ("SELECT * FROM $db WHERE conditions AND length = 3");
但是,這是行不通的。 ..有人可以告訴我正確的查詢嗎?
我有大量的單詞的數據庫,但我想只選擇那些記錄字符長度等於給定數量(例如,在案例3):查詢字符長度的條件?
$query = ("SELECT * FROM $db WHERE conditions AND length = 3");
但是,這是行不通的。 ..有人可以告訴我正確的查詢嗎?
對不起,我不知道你在談論哪些SQL平臺:
在MySQL:
在MSSQL$query = ("SELECT * FROM $db WHERE conditions AND LENGTH(col_name) = 3");
$query = ("SELECT * FROM $db WHERE conditions AND LEN(col_name) = 3");
長度()(MySQL的)或LEN()(MSSQL)函數將返回可用作WHERE子句中的條件的列中字符串的長度。
編輯
我知道這是真的老了,但想到我會擴大我的答案,因爲,正如保羅·布埃諾正確地指出,你最有可能想要的字符數,而不是數量字節。感謝Paulo。
因此,對於MySQL,有CHAR_LENGTH()
。下面的例子突出的CHAR_LENGTH()
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 |
+--------+-----------+----------------+
要小心,如果你處理的多字節字符。
SELECT *
FROM my_table
WHERE substr(my_field,1,5) = "abcde";
我想你想要這樣的:
SELECT * 從dbo.table 其中DATALENGTH(列)= 3
MySQL的句法是一樣的SQLite的語法。爲我工作很好。 – Jon
在postgres中你可以使用像mysql這樣的「長度」函數 –
當心!在多字節字符集中,它可能會有所不同。看到[這](http://stackoverflow.com/questions/1870937/mysql-how-to-select-data-by-string-length) –