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

Откуда:
Сообщений: 6
Добрый день!

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

If (select Message from TableName where Message = 'xxx') then Message = 'yyy'

Нужно просто напросто заменять ответ запроса на свой.
Рылся по справочникам sql как можно реализовать что-то подобное, так и не разобрался...
14 мар 12, 10:08    [12244257]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
select CASE WHEN Message = 'xxx' THEN 'yyy'
 ELSE Message END
from TableName 
14 мар 12, 10:13    [12244276]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Eagle_84
Member

Откуда: Москва
Сообщений: 1535
так используйте
Case
и все, он это сможет сделать
14 мар 12, 10:14    [12244280]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Spartakich
Member

Откуда: Riga
Сообщений: 380
Владимир_237,

SELECT CASE WHEN .... THEN ... ELSE ... END from table
14 мар 12, 10:14    [12244281]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Владимир_237
Member

Откуда:
Сообщений: 6
Спасибо большое! вопрос закрыт.
14 мар 12, 10:15    [12244291]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Владимир_237
Member

Откуда:
Сообщений: 6
Всё так, всё верно.... в ответ приходит множество ячеек. И ячейки 'xxx' заменяет на 'yyy' НО... Мне нужна только одна определённая ячейка.
14 мар 12, 11:12    [12244705]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Владимир_237
Member

Откуда:
Сообщений: 6
Владимир_237
Всё так, всё верно.... в ответ приходит множество ячеек. И ячейки 'xxx' заменяет на 'yyy' НО... Мне нужна только одна определённая ячейка.


Если быть точнее в ответ мне нужна только одна изменёная ячейка, а не весь массив стобца MESSAGE
14 мар 12, 11:14    [12244719]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Владимир_237
Всё так, всё верно.... в ответ приходит множество ячеек. И ячейки 'xxx' заменяет на 'yyy' НО... Мне нужна только одна определённая ячейка.
Так заменяйте одну определённую. В чём проблема-то?
14 мар 12, 11:15    [12244722]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Владимир_237
Всё так, всё верно.... в ответ приходит множество ячеек. И ячейки 'xxx' заменяет на 'yyy' НО... Мне нужна только одна определённая ячейка.

Давайте до конца, уж, как вы её определяете ? Клещами , что ли тянуть из вас все ваши хотелки ?
14 мар 12, 11:22    [12244785]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Владимир_237
Member

Откуда:
Сообщений: 6
alexeyvg
Владимир_237
Всё так, всё верно.... в ответ приходит множество ячеек. И ячейки 'xxx' заменяет на 'yyy' НО... Мне нужна только одна определённая ячейка.
Так заменяйте одну определённую. В чём проблема-то?


Прислал скрин экрана, чтобы небыло недопониманий...

НЕОБХОДИМО НА ЗАПРОС ПОЛУЧАТЬ ОДНУ ЯЧЕЙКУ СО ЗНАЧЕНИЕМ 'yyy'

К сообщению приложен файл. Размер - 107Kb
14 мар 12, 11:26    [12244815]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Владимир_237
НЕОБХОДИМО НА ЗАПРОС ПОЛУЧАТЬ ОДНУ ЯЧЕЙКУ СО ЗНАЧЕНИЕМ 'yyy'

select 'yyy';
14 мар 12, 11:28    [12244839]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
smallserg
Member

Откуда:
Сообщений: 82
Владимир_237,

используйте предикат Where
14 мар 12, 11:31    [12244860]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Eagle_84
Member

Откуда: Москва
Сообщений: 1535
Ennor Tiegael
Владимир_237
НЕОБХОДИМО НА ЗАПРОС ПОЛУЧАТЬ ОДНУ ЯЧЕЙКУ СО ЗНАЧЕНИЕМ 'yyy'

select 'yyy';


а лучше TOP 1 :)
14 мар 12, 11:34    [12244897]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
update TOP (1) dbo.TableName
set Message  = CASE WHEN Message = 'xxx' THEN 'yyy' END

заменить одну любую запись, где встретится Message = 'xxx'
14 мар 12, 11:39    [12244926]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
qwerty112
Guest
trew
update TOP (1) dbo.TableName
set Message  = CASE WHEN Message = 'xxx' THEN 'yyy' END

заменить одну любую запись, где встретится Message = 'xxx'

ага,
а где не встретится - НУЛЛ вколотит
14 мар 12, 11:42    [12244943]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
update TOP (1) dbo.TableName
set Message  ='yyy' 
where Message = 'xxx' 

а так?
14 мар 12, 11:44    [12244962]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
chitaem_pervyj_post
Guest
trew,

>>>Нужно просто напросто заменять ответ запроса на свой.

не исходник заменять просят (update), а результат выборки (select).
14 мар 12, 11:50    [12245020]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
qwerty112
Guest
declare @t table (xz varchar(3))

insert into @t

select 'aaa' union all
select 'aaa' union all
select 'bbb' union all
select 'ccc' union all
select 'ccc' union all
select 'xxx' union all
select 'xxx' union all
select 'xxx' union all
select 'xxx' union all
select 'xxx'

select xz, case when rn=1 and xz='xxx' then 'yyy' else xz end as xz1
from
(select xz, row_number() over (partition by xz order by xz) as rn
from @t) a
14 мар 12, 11:53    [12245054]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
chitaem_pervyj_post,
Тогда так:
select
CASE WHEN cn =1 and Message = 'xxx' THEN 'yyy' END AS Message
from
(
select Message, ROW_NUMBER() OVER(ORDER BY Message) cn
from dbo.TableName
) tt
14 мар 12, 11:56    [12245090]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с заменой  [new]
Владимир_237
Member

Откуда:
Сообщений: 6
Спасибо всем большое за ответы.
Дальше буду самому себе мозг компасировать...
14 мар 12, 12:13    [12245252]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить