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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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