Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как выбрать с помощью LIKE и переменной?  [new]
putter
Member

Откуда:
Сообщений: 5
Здраствуйте друзья,

Нужен запрос в процедуре. Исспользуя команду LIKE и внутреннуб процедуру.
К примеру

select summa
from table1
where customer like '%:||cust_name||%';

где cust_name строковая переменная.
Запрос не работает с переменным.
Пробовал статически, к примеру в место cust_name слово 'Brown', здесь работает.

Помогите пожалуйста.

Заранее спасибо.
17 янв 09, 11:15    [6700231]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
Elic
Member

Откуда:
Сообщений: 29979
putter
where customer like '%:||cust_name||%';
Запрос не работает с переменным.
Здесь нет переменных, как и нет конкатенации Есть лишь один длинный строковый литерал
Попробуй лишь хотя бы чуть-чуть включить мозг :)
17 янв 09, 11:21    [6700240]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
putter
Member

Откуда:
Сообщений: 5
Извените пропултил кое что


select summa
from table1
where customer like '%'||cust_name||'%';
17 янв 09, 11:25    [6700249]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
Elic
Member

Откуда:
Сообщений: 29979
putter
Извените пропултил кое что
where customer like '%'||cust_name||'%';
putter
Запрос не работает
Тогда RTFM
17 янв 09, 11:35    [6700266]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
putter
Member

Откуда:
Сообщений: 5
Здравствуйте друзья,

Исправляю вопрос, так как, оказывается непонятно.

Нужен запрос в процедуре. Имеется имя клиента и нужно вычислить сумму. Но почему-то не получается с этим частью запроса.

select summa
from table1
where customer like '%' || cust_name || '%';

где cust_name строковая переменная описанная в DECLARE

DECLARE
Cust_name varchar2(20);

Как можно решить этот вопрос? Можно ли фильтровать с помощью LIKE и строковой переменной.

Помогите, пожалуйста.

Заранее спасибо.
17 янв 09, 11:51    [6700297]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
Elic
Member

Откуда:
Сообщений: 29979
putter
Исправляю вопрос, так как, оказывается непонятно.
Ты ничего не "исправил"
Приведи полный код, который ты "наваял". Расскажи (покажи), что получается. И что же, по-твоему, должно было бы получиться. Это и есть RTFM.
17 янв 09, 11:57    [6700306]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
putter
Member

Откуда:
Сообщений: 5
Ответ найдень

select summa
from table1
where customer like to_char('%' || cust_name || '%');

Потому что, cust_name varchar2. А нужно было просто перевести varchar2 на char.

Спасибо всем и Elic у
17 янв 09, 12:20    [6700340]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54381
putter
Ответ найден
select summa
from table1
where customer like to_char('%' || cust_name || '%');
Потому что, cust_name varchar2. А нужно было просто перевести varchar2 на char.

Спасибо всем и Elic у
что-то ты не договариваешь
Никогда не писал to_char в аналогичных выражениях, и всё работало.
17 янв 09, 12:30    [6700364]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
Elic
Member

Откуда:
Сообщений: 29979
putter
Ответ найдень
where customer like to_char('%' || cust_name || '%');
Потому что, cust_name varchar2. А нужно было просто перевести varchar2 на char.
Бррр... Не кури больше такой травы

Какие NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET у БД и тип столбца customer?
17 янв 09, 12:30    [6700365]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
_Alex_SMIRNOV_
Member

Откуда: Киев
Сообщений: 1519
Используйте в условие функцию UPPER или LOWER для сравнения, может дело в том, что не совпадает регистр?
17 янв 09, 12:33    [6700373]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
putter
Member

Откуда:
Сообщений: 5
Я узнал это через функция UPPER. Так как он возвращает char, а для UPPER или LOWER нет нужды. так как в большенство случаев используются числа. Ну вот подумал использовать преобразование.
А поле customer varchar2(200).

Всем спасибо.
17 янв 09, 12:37    [6700386]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
Elic
Member

Откуда:
Сообщений: 29979
putter
Ну вот подумал использовать преобразование.
А поле customer varchar2(200).
В to_char-е тоже нет нужды
У тебя просто странные совпадения при отсутствии понимания
17 янв 09, 12:42    [6700395]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать с помощью LIKE и переменной?  [new]
Neco
Member

Откуда:
Сообщений: 52
я обычно так делаю:
select summa
from table1
where customer like '%'||:cust_name||'%'
17 янв 09, 17:56    [6700894]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить