Ответ 1
Извините, я не знал, на какой платформе SQL вы говорите:
В MySQL:
$query = ("SELECT * FROM $db WHERE conditions AND LENGTH(col_name) = 3");
в MSSQL
$query = ("SELECT * FROM $db WHERE conditions AND LEN(col_name) = 3");
Функция LENGTH() (MySQL) или LEN() (MSSQL) вернет длину строки в столбце, который вы можете использовать в качестве условия в предложении WHERE.
Edit
Я знаю, что это действительно старый, но я подумал, что я разберу свой ответ, потому что, как справедливо указал Пауло Буэно, вы, скорее всего, хотите количество символов, а не количество байтов. Спасибо Пауло.
Итак, для MySQL есть CHAR_LENGTH()
. В следующем примере подчеркивается разница между LENGTH()
a 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 |
+--------+-----------+----------------+
Будьте осторожны, если вы имеете дело с многобайтовыми символами.