![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
savmp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 260 Регистрация: 27.7.2009 Где: Геленджик Репутация: -2 Всего: -16 |
Здравствуйте!
ЕСТЬ база данных и 2 поля в ней ID и DATE 1 Y-3784 2 Y-5674 3 N-7908 4 Y-4672 5 N-5637 6 Y-5634 7 N-6676 ПОДСКАЖИТЕ как задать запрос к базе данных который бы мне вытащил все строки где начало строки начинается с буквы Y После чего я буду использовать цыкл. Большое вам спасибо! |
|||
|
||||
$дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 1 Всего: 45 |
Это сообщение отредактировал(а) $дмитрий - 25.1.2012, 20:15 |
|||
|
||||
Gold Dragon |
|
||||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
или так
Если нужно учитывать регистр, то можно так
или
или
Это сообщение отредактировал(а) Gold Dragon - 26.1.2012, 07:31 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||||
|
|||||||||
savmp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 260 Регистрация: 27.7.2009 Где: Геленджик Репутация: -2 Всего: -16 |
А КАК СДЕЛАТЬ ТАКОЕ
ID DATA_A DATA_A DATA_A NAME 1 Y-9890 Y-1178 N-0390 ФИРИА-1 2 Y-7878 N-6350 ФИРИА-2 3 N-9090 N-3390 ФИРИА-3 4 Y-7800 N-2333 ФИРИА-4 5 Y-8909 ФИРИА-5 то есть в одной строке есть 3 столбца DATA_A DATA_A DATA_A Нужно вытягивать строки где начало начинается на Y результат должен быть таким 1 Y-9890 ФИРИА-1 1 Y-1178 ФИРИА-1 2 Y-7878 ФИРИА-2 4 Y-7800 ФИРИА-4 5 Y-8909 ФИРИА-5 СПАИБО Это сообщение отредактировал(а) savmp - 26.1.2012, 16:06 |
|||
|
||||
$дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 1 Всего: 45 |
Перечисли условия через OR
|
|||
|
||||
savmp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 260 Регистрация: 27.7.2009 Где: Геленджик Репутация: -2 Всего: -16 |
ПОДСКАЖИ КАК??? Я все варианты перепробовал... но в цыкле ничего не получается. |
|||
|
||||
Valinur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 21.9.2007 Где: Москва Репутация: нет Всего: 6 |
Как минимум 3 столбца не могут иметь одинаковое имя, пусть будут ID DATA_A1 DATA_A2 DATA_A3 NAME
Тогда запрос
Это на самом деле худший вариант, т.к. всю таблицу движку придется пройти 3 раза. --------------------
Не бойтесь совершенства, Вы все равно его не достигнете (с) ... |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
||||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: нет Всего: 69 |
во многих ваших темах вижу такое высказывание, но ни разу ни видел вариантов Это сообщение отредактировал(а) krundetz - 27.1.2012, 15:55 |
|||
|
||||
$дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 1 Всего: 45 |
skyboy, совершенно не слабо, думаешь прирост скорости существенней будет?
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
не в этом случае. оптимизатор "LIKE 'Y%'" преобразует в эквивалент с подстрокой. но зачем предлагать использование LIKE/REGEXP в этом случае? чтоб следующим вопросом было "а почему у меня на 1000 строк тормозит LIKE a%b%?"? |
|||
|
||||
$дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 1 Всего: 45 |
Тесты дают интересные результаты
10 000 строк. Где NAME - поле с случайным набор [a-Z0-9]{6}, CHAR - символ от A до Z
При 100, 1000 строк картина та же |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Я поначалу думал ты прикалываешься. ![]() Вариант с лайк - единственный из предложенных, который допускает использование индекса. А потому он единственный - не извращенный. ![]() $дмитрий, если уж взялся за тайминги, можешь показать результат отбора по индексированному набору с высокой селективностью? И не на тыще записей, а хотя бы на полумиллионе, тысячные секунды слишком уж близки к погрешности измерения. Добавлено @ 23:54 Оракл, миллион случайных буквенных строк длинной 100 символов, с индексом
Мася, афайк, тоже умеет использовать индекс для отбора по лайку, при условии захвата паттерна с начала строки. Это сообщение отредактировал(а) Zloxa - 28.1.2012, 00:09 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Чота я сначала опубликовал результат, а потом его сам посмотрел и диву дался...
оказалось я индекс не построил. ![]() Вот результат с индексом:
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |