Выборка по первым символам

Статус
В этой теме нельзя размещать новые ответы.

upfr7

Создатель
Регистрация
13 Апр 2008
Сообщения
26
Реакции
0
С буквами все понятно, а вот как выбрать одним запросом, чтобы были все записи где первые идут цифры(0-9)

Код:
SELECT * FROM artist WHERE a_name LIKE'[0-9]%'

не помогает...
 
С буквами все понятно, а вот как выбрать одним запросом, чтобы были все записи где первые идут цифры(0-9)

Код:
SELECT * FROM artist WHERE a_name LIKE'[0-9]%'

не помогает...

SELECT * FROM artist WHERE a_name regexp "^\d+"

если нужно только чтоб ОДНА цифра была вначале - "^\d"
 
С регулярками это конечно же выход, но медленный, если нужна скорость, то лучше сделать так:

SELECT *
FROM artist
WHERE (
a_name LIKE '1%'
OR a_name LIKE '2%'
OR a_name LIKE '3%'
OR a_name LIKE '4%'
OR a_name LIKE '5%'
OR a_name LIKE '6%'
OR a_name LIKE '7%'
OR a_name LIKE '8%'
OR a_name LIKE '9%'
OR a_name LIKE '0%'
)
 
Когда-то тоже мучался, потом тоже пришел к такому варианту как в последнем посте :)
 
Последний запрос эффективен при наличии индекса по a_name, иначе на фулскане таблицы по сравнению с regexpом не сильно выиграет.
 
Предлагаю такой вариант.

Таблица ttt: id INT name VARCHAR(20).
Добавляем константу 0 вначало name. Если вначале name нет цифр, результат 0. Иначе первые цифры name преобразуются в число и складываются с нулём.
Выводим значения суммы больше нуля. Можно так же отсортировать их по возрастанию.

 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху