Подтвердить что ты не робот

Запрашивая условие WHERE для длины символа?

У меня есть база данных с большим количеством слов, но я хочу выбрать только те записи, где длина символа равна заданному числу (в примере 3):

$query = ("SELECT * FROM $db WHERE conditions AND length = 3");

Но это не сработает... может ли кто-нибудь показать мне правильный запрос?

4b9b3361

Ответ 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 |
+--------+-----------+----------------+

Будьте осторожны, если вы имеете дело с многобайтовыми символами.

Ответ 2

SELECT *
   FROM   my_table
   WHERE  substr(my_field,1,5) = "abcde";

Ответ 3

Я думаю, вы этого хотите:

выберите * от dbo.table где DATALENGTH (column_name) = 3