Оператор MySQL SELECT для «длины» поля больше 1 - PullRequest
57 голосов
/ 09 октября 2009

У меня есть поле LINK в моей таблице. Некоторые строки имеют ссылку, некоторые нет.

Я бы хотел выбрать все строки, где присутствует LINK. (длина больше X символов).

Как мне написать это?

Ответы [ 4 ]

104 голосов
/ 09 октября 2009

Как насчет:

SELECT * FROM sometable WHERE CHAR_LENGTH(LINK) > 1

Вот страница строковых функций MySql (5.0).

Обратите внимание, что я выбрал CHAR_LENGTH вместо LENGTH, так как если в данных есть многобайтовые символы, вы, вероятно, действительно интересуетесь, сколько символов есть, а не сколько байтов памяти они взяли. Таким образом, для вышеизложенного строка, в которой LINK является одним двухбайтовым символом, возвращаться не будет, тогда как при использовании LENGTH.

Обратите внимание, что если LINK равно NULL, результат CHAR_LENGTH(LINK) также будет NULL, поэтому строка не будет совпадать.

11 голосов
/ 09 октября 2009
select * from [tbl] where [link] is not null and len([link]) > 1

Для пользователя MySQL:

LENGTH([link]) > 1
5 голосов
/ 26 июля 2015

На всякий случай, если кто-то захочет узнать, как в oracle и пришел сюда (как я), синтаксис будет

select length(FIELD) from TABLE

на всякий случай;)

4 голосов
/ 09 октября 2009

Попробуйте:

SELECT
    *
FROM
    YourTable
WHERE
    CHAR_LENGTH(Link) > x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...