Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по MySQL, как сделать запрос?

10K
11 июня 2006 года
supergis
27 / / 06.01.2006
Здравствуйте уважаемые!
Вот такой вопрос, есть таблица avto в ней столбец marka, со значением напримет 'Cruser'
как выбрать строку со значением Cruser если значение ввведено частично на пример 'Cru' я понял
select * from avto where marka like "%Cru%"
А как сделать если наоборот введено значение длиннее на пример 'Cruser100'
242
11 июня 2006 года
Оlga
2.2K / / 04.02.2006
думаю нужно использовать функции для работы со строками.
В SQL Oracle можно было бы сделать так:
 
Код:
select * from avto where marka = substr('Cruser100',1,6)
2
11 июня 2006 года
squirL
5.6K / / 13.08.2003
в MySQL такое тоже есть.
10K
11 июня 2006 года
supergis
27 / / 06.01.2006
(я в своих справочниках по MySQL substr ненашёл)
Я так понял что 6 в substr('Cruser100',1,6) зто количество символов в значении поля marka,
но где его взять, ведь придётся делать ещё запрос чтобы узнавать количество символов.
А хотелось бы по проще, я накопал функцию
select * from avto where STRCMP(marka, 'Cruser100')=-1
но она работает еслив хождение начинается с начала строки, иначе нет
242
11 июня 2006 года
Оlga
2.2K / / 04.02.2006
можешь написать проще пожалуйста
а я бы сделала так:
 
Код:
select * from avto where marka = substr('Cruser100',1,length(marka))

на мой взгляд это не сложно
+
желательно использовать функции upper/lower/Initcap, т.к. ты
не знаешь заранее в каком case пользователь введет данные

 
Код:
select * from avto where marka = [COLOR=red]initcap[/COLOR][COLOR=red]( [/COLOR]substr('Cruser100',1,length(marka)) [COLOR=red])[/COLOR]
9.4K
11 июня 2006 года
_nоrth_
99 / / 24.04.2006
select * from avto where marka like "%Cruiser100%"

Должна выбирать строки с Cruiser100.
Макс. можно написать

select * from avto where upper(marka) like "%CRUISER100%"

Можно еще через LOCATE()

select * from avto where locate('Cruiser100', name)>0

А если речь идет о substring, то наверно ее нужно применить к полю, а не к строковой константе. Типа
substring(name, 1,7) = 'Cruiser' Или
left(name, 7) = 'Cruiser'
242
11 июня 2006 года
Оlga
2.2K / / 04.02.2006
[quote=_nоrth_]select * from avto where marka like "%Cruiser100%"

Должна выбирать строки с Cruiser100.
Макс. можно написать

select * from avto where [COLOR=red]upper(marka) like "%CRUISER100%"[/COLOR]

Можно еще через LOCATE()

select * from avto where locate('Cruiser100', name)>0
[/quote]
ну и что это даст если marka == CRUISER ?
в данном случае лайк не поможет +
кто обещал что пользователь введет данные в верхнем регистре?
Цитата:

А если речь идет о substring, [COLOR=red]то наверно ее нужно применить к полю, а не к строковой константе.[/COLOR] Типа
substring(name, 1,7) = 'Cruiser' Или
left(name, 7) = 'Cruiser'


нет разницы, кроме того что эффективно и правильно использовать к входным данным(полученным от пользователя)

242
11 июня 2006 года
Оlga
2.2K / / 04.02.2006
 
Код:
select * from avto where marka = [COLOR=red]initcap[/COLOR][COLOR=red]( [/COLOR]substr(&nameMarka,1,length(marka)) [COLOR=red])[/COLOR]
10K
11 июня 2006 года
supergis
27 / / 06.01.2006
У меня(версия 3.28.53)
версии
marka = substr('Cruser100',1,length(marka))
LOCATE(marka, 'Cruser100')>0
marka = initcap( substr(&nameMarka,1,length(marka)) )
не работают

пока работает только
select * from avto where STRCMP(marka, 'Cruser100')=-1
9.4K
11 июня 2006 года
_nоrth_
99 / / 24.04.2006
Если я правильно понял, то поле name содержит напр. такие строки:

Toyota Landcruiser J100
Toyota Landcruiser PRADO J12
Toyota Landcruiser J9

Пользователь вводит "cruiser100" и нужно чтоб были выбраны те три строки.
Это врятли получится. И это нормально. Если пользователь ввел строку, которая не является подстрокой ни одного значения name, то само собой, что возвращается пустая таблица.
242
11 июня 2006 года
Оlga
2.2K / / 04.02.2006
[quote=_nоrth_]Если я правильно понял,..[/quote]

[quote=supergis]
Вот такой вопрос, [COLOR=blue]есть таблица avto в ней столбец marka,[/COLOR] со значением напримет [COLOR=blue]'Cruser'
[/COLOR]как выбрать строку со значением Cruser если значение ввведено частично на пример 'Cru' я понял
select * from avto where marka like "%Cru%"
А [COLOR=blue]как сделать если наоборот введено значение длиннее на пример 'Cruser100'[/COLOR][COLOR=black][/quote][/COLOR]
[COLOR=black][/COLOR]
[COLOR=black]или я что то не понимаю, но самое главное что у автора
наши функции не работают, а это нехорошо[/COLOR]
242
11 июня 2006 года
Оlga
2.2K / / 04.02.2006
[quote=supergis](я в своих справочниках по MySQL substr ненашёл)
А хотелось бы по проще, я накопал функцию
select * from avto where STRCMP(marka, 'Cruser100')=-1
[COLOR=blue]но она работает еслив хождение начинается с начала строки[/COLOR], иначе нет[/quote]
если не трудно, объясни подробней что ты имеешь ввиду,
как работает функция strcmp в MySQL не знаю :)
9.4K
11 июня 2006 года
_nоrth_
99 / / 24.04.2006
Если действительно, [color=red]'как сделать если наоборот введено значение длиннее на пример 'Cruser100'[/color], то

select * from avto where locate(upper(введенная_строка), upper(name))>0 or locate(upper(name), upper(введенная_строка))>0
10K
11 июня 2006 года
supergis
27 / / 06.01.2006
нет немного не так есть столбец marka в нём
cruse
cru
cruser
toyota
bmw
а пользователь ввёл 'cruser100'
и нужно выбрать строки похожие на 'cruser100' то есть первые 3
10K
11 июня 2006 года
supergis
27 / / 06.01.2006
Спасибо!!! конструкция
select * from avto where locate(upper(введенная_строка), upper(name))>0 or locate(upper(name), upper(введенная_строка))>0

вроде работает нормально!
5.4K
13 июня 2006 года
He!p
39 / / 10.06.2004
я бы например сделал табличку в которой были бы марки машин...при запросе к примеру toyota100 из словаря брались бы марки, в данном случае toyota и проверялось бы вхождение подстроки(из таблицы-словаря) в строку запроса. так мы определим к примеру марку авто ну а дальше уже дело техники... парсим строку запроса берем остальные параметры и првоеряем уже на кузов или движок машини или еще какиенить параметры...можно и запросами типа ааперами и тд...короче зависит от поставленной задачи...
8.0K
13 июня 2006 года
abrec
5 / / 13.07.2004
Думаю REGEXP поможет в сложных поисках по подстрокам
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог