Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 PATINDEX  [new]
Just_Serg
Member

Откуда:
Сообщений: 498
Добрый день всем! Приведенный ниже кусок кода не работает, т.е. не ищет, присутствует ли данная подстрока KOD_TYPE_CONTRACT в строке (которая получается select'ом...

....
FL=Case when PATINDEX('%'+ RTRIM(CAST(KOD_TYPE_CONTRACT as varchar))+'%',(select top 1 l.NO_DEAL_TYPE From S_LIMITS l WHERE (l.create_date BETWEEN @dt_l and @dt_l+1) and (l.KOD_LIMIT=KOD_LIMIT)) )=0
Then 1
Else 0
end
....

Что я тут делаю неправильно?
Заранее благодарен за помощь!
2 фев 06, 15:10    [2314075]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37100
Получите значение запроса в переменную.
2 фев 06, 15:11    [2314082]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
Just_Serg
Member

Откуда:
Сообщений: 498
а так делать можно? т.е. выборку 1 значение из селекта?
(select top 1 * from
(select l.NO_DEAL_TYPE
From S_LIMITS l
WHERE (l.create_date BETWEEN @dt_l and @dt_l+1)
and (l.KOD_LIMIT=KOD_LIMIT))
)
2 фев 06, 16:55    [2314740]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

вот в этом условии
l.KOD_LIMIT=KOD_LIMIT
укажите название таблицы для столбца, который справа...
иначе, оно понимается как
l.KOD_LIMIT=l.KOD_LIMIT


Posted via ActualForum NNTP Server 1.3

2 фев 06, 17:03    [2314767]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
Just_Serg
Member

Откуда:
Сообщений: 498
Пардон, показал не весь код:

Select KOD_CLIENT,
(select top 1 * from
(select l.NO_DEAL_TYPE From S_LIMITS l WHERE (l.create_date BETWEEN @dt_l and @dt_l+1) and (l.KOD_LIMIT=KOD_LIMIT)))
From S_DEALS where (CREATE_DATE BETWEEN @dt and @dt+1)

Вот так не хочет работать. Что делаю неправильно?
2 фев 06, 17:11    [2314807]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

так попробуйте:
Select KOD_CLIENT,
(select top 1 * from
(select l.NO_DEAL_TYPE From S_LIMITS l WHERE (l.create_date BETWEEN @dt_l and @dt_l+1) and (l.KOD_LIMIT=S_DEALS.KOD_LIMIT)))
From S_DEALS where (CREATE_DATE BETWEEN @dt and @dt+1)




Posted via ActualForum NNTP Server 1.3

2 фев 06, 17:13    [2314822]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
Just_Serg
Member

Откуда:
Сообщений: 498
daw

так попробуйте:
Select KOD_CLIENT,
(select top 1 * from
(select l.NO_DEAL_TYPE From S_LIMITS l WHERE (l.create_date BETWEEN @dt_l and @dt_l+1) and (l.KOD_LIMIT=S_DEALS.KOD_LIMIT)))
From S_DEALS where (CREATE_DATE BETWEEN @dt and @dt+1)




Posted via ActualForum NNTP Server 1.3


Не выходит - пишет: "Line 10: Incorrect syntax near ')'."
2 фев 06, 17:17    [2314838]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
Just_Serg
Member

Откуда:
Сообщений: 498
Вроде бы плевое дело - вытащить первое значение из запроса, а вот - не получается
2 фев 06, 17:19    [2314847]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

Select KOD_CLIENT,
(select top 1 l.NO_DEAL_TYPE
  From S_LIMITS l
  WHERE (l.create_date BETWEEN @dt_l and @dt_l+1)
        and (l.KOD_LIMIT=S_DEALS.KOD_LIMIT)
 )
From S_DEALS where (CREATE_DATE BETWEEN @dt and @dt+1)



Posted via ActualForum NNTP Server 1.3

2 фев 06, 17:22    [2314864]     Ответить | Цитировать Сообщить модератору
 Re: PATINDEX  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

зы: и если уж top 1, то и order by надо бы указывать...
иначе, само понятие "первая запись" особого смысла не имеет.


Posted via ActualForum NNTP Server 1.3

2 фев 06, 17:25    [2314879]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить