Текущее время: Вс, июн 29 2025, 04:41

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Маски ( % и _ ) в переменной для конструкции where x like y
СообщениеДобавлено: Ср, дек 15 2004, 10:46 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 12 2004, 11:17
Сообщения: 104
Добрый день. Возможно ли использовать маски % и _ в конструкции where x like y при условии, что они находятся в переменной у.
Спасибо.

_________________
Верх упорства: набирать неверный пароль, пока компьютер не согласится.
Процесс вдумчивого пережевывания, как ничто другое, успокаивает и стимулирует умственную деятельность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 15 2004, 10:52 
Гость
v 4.7

DATA: SS TYPE STRING.
SS = 'LIFNR LIKE ''%1'''.
SELECT * FROM LFA1 APPENDING TABLE KN WHERE (SS).


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 15 2004, 10:55 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 12 2004, 11:17
Сообщения: 104
ВН написал(а):
v 4.7

DATA: SS TYPE STRING.
SS = 'LIFNR LIKE ''%1'''.
SELECT * FROM LFA1 APPENDING TABLE KN WHERE (SS).


У меня пока v 4.0 удет ли работать.

_________________
Верх упорства: набирать неверный пароль, пока компьютер не согласится.
Процесс вдумчивого пережевывания, как ничто другое, успокаивает и стимулирует умственную деятельность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 15 2004, 11:08 
Гость
не знаю, попробуй,
но в 4.6 - синтаксис немного другой


DATA: KN LIKE LFA1 OCCURS 0 WITH HEADER LINE.

DATA: SS(70) OCCURS 100 WITH HEADER LINE.
SS = 'LIFNR LIKE ''%1'' OR'.
APPEND SS.
SS = 'LIFNR LIKE ''%2'''.
APPEND SS.
SELECT * FROM LFA1 APPENDING TABLE KN WHERE (SS).


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: Маски ( % и _ ) в переменной для конструкции where x lik
СообщениеДобавлено: Чт, дек 16 2004, 02:13 
Гость
onics написал(а):
Добрый день. Возможно ли использовать маски % и _ в конструкции where x like y при условии, что они находятся в переменной у.
Спасибо.


Возможно я чего-то не догнал, но:

date y(7).
у = '%1234__'.
select * from ttt where x like y.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: Маски ( % и _ ) в переменной для конструкции where x lik
СообщениеДобавлено: Чт, дек 16 2004, 09:35 
Гость
EHOT написал(а):
onics написал(а):
Добрый день. Возможно ли использовать маски % и _ в конструкции where x like y при условии, что они находятся в переменной у.
Спасибо.


Возможно я чего-то не догнал, но:

date y(7).
у = '%1234__'.
select * from ttt where x like y.


в 4.7 - совершенно верно за исключение того, что 'y' - в скобках
select * from ttt where x like (y),
а вот в 4.6 - 'y' - должен быть таблицей


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 16 2004, 10:41 
Специалист
Специалист

Зарегистрирован:
Пн, окт 18 2004, 11:25
Сообщения: 183
Откуда: Moscow
раз такие траблы с версиями, может надежнее будет в loop-е значение проверять ? ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Маски ( % и _ ) в переменной для конструкции where x lik
СообщениеДобавлено: Чт, дек 16 2004, 11:13 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
ВН написал(а):
EHOT написал(а):
onics написал(а):
Добрый день. Возможно ли использовать маски % и _ в конструкции where x like y при условии, что они находятся в переменной у.
Спасибо.


Возможно я чего-то не догнал, но:

date y(7).
у = '%1234__'.
select * from ttt where x like y.


в 4.7 - совершенно верно за исключение того, что 'y' - в скобках
select * from ttt where x like (y),
а вот в 4.6 - 'y' - должен быть таблицей

В 4.6C предложенный вариант отлично работает:
select * from ttt where x like y.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 16 2004, 11:27 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
все правы...
можно и так
select * from ttt where x like y , тогда y строковая переменная

и так
select * from ttt where (y) , тогда y это таблица строк ну и соответсвенно можно сделать динамическое условие выбора


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 16 2004, 11:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 31 2004, 14:57
Сообщения: 5258
Откуда: Ростов невеликий
Пол: Мужской
Eugene написал(а):
все правы...
можно и так
select * from ttt where x like y , тогда y строковая переменная

и так
select * from ttt where (y) , тогда y это таблица строк ну и соответсвенно можно сделать динамическое условие выбора

вот млин - а я извращался - не было примерчика под рукой - таперьча будем знать :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Маски ( % и _ ) в переменной для конструкции where x lik
СообщениеДобавлено: Пт, дек 17 2004, 01:59 
Гость
ВН написал(а):

в 4.7 - совершенно верно за исключение того, что 'y' - в скобках
select * from ttt where x like (y),
а вот в 4.6 - 'y' - должен быть таблицей


в 4.0 'y' - строковая переменная и никаких скобок не надо ...


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 17 2004, 02:01 
Гость
Eugene написал(а):
все правы...
можно и так
select * from ttt where x like y , тогда y строковая переменная

и так
select * from ttt where (y) , тогда y это таблица строк ну и соответсвенно можно сделать динамическое условие выбора


абсолютно точно ...


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: Маски ( % и _ ) в переменной для конструкции where x lik
СообщениеДобавлено: Пт, дек 17 2004, 11:41 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 12 2004, 11:17
Сообщения: 104
EHOT написал(а):


в 4.0 'y' - строковая переменная и никаких скобок не надо ...


Да все работает. Только возник новый вопрос. Свалит ли like таблицу в последовательный просмотр, если в where указать поля входящие в индекс. (Спрашиваю потому, что индекса еще нет, думаю стоит ли подходить к постановщику задачи с вопросом его создания)

_________________
Верх упорства: набирать неверный пароль, пока компьютер не согласится.
Процесс вдумчивого пережевывания, как ничто другое, успокаивает и стимулирует умственную деятельность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, дек 19 2004, 19:16 
Гость
Это зависит от оптимизатора запроса какой он план изберет - просмотр диапазона по индексу или полное сканирование таблицы. Если индекс достаточно селективен, таблица достаточно велика и т.п., то оператор "like таблицу в последовательный просмотр не свалит".
З.Ы. Вообще говоря, с подобными вопросами нужно подходить не к постановщику, а к админу, который и оценит целесообразность создания индекса в данных условиях.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: *
СообщениеДобавлено: Пн, дек 20 2004, 07:40 
Гость
попутно вопрос: а вот если LIKE пользуется для поиска по последним цифрам в длинном поле (ну например в контроллинге есть "некрасивые" поля, где в одно значение состыкованы 3-4 "осмысленных" значения), както можно заранее угадать, насколько эффективен будет такой поиск. И в частности, можно-ли строить спец-индекс по части такого поля (например, индексируем символы в позициях 5-8 такого поля, и потом пользуем LIKE ____значение%)?

т.е., иначе говоря, как в общем случае оптимизировать выдергивание данных при условии, что условие отбора запрятано в середину достаточно длинного поля, а таблица имеет приличный объем (т.е. прямой перебор получается неэффективным по времени) ? В частности, построение "временных" таблиц-индексов по выдранной части поля привествуется САПом?


Принять этот ответ
Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB