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

Откуда: Київ
Сообщений: 10428
как запросом сделать такое:

есть таблица, в ней в поле name значения типа

myname
hisname
myname(1)
myname(97)
myname(34)

как получить значение myname(98)
для указанного префикса myname?
29 авг 12, 11:20    [13080730]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать следующее значение?  [new]
qwerty112
Guest
Winnipuh
как запросом сделать такое:

есть таблица, в ней в поле name значения типа

myname
hisname
myname(1)
myname(97)
myname(34)

как получить значение myname(98)
для указанного префикса myname?

пока так
select 'myname(98)'


если "слишком просто" - поробуйте вопрос переформулировать ...
29 авг 12, 11:24    [13080760]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать следующее значение?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Winnipuh
как получить значение myname(98)
для указанного префикса myname?

1. Выбрать максимальное значение для префикса
2. Извлечь из него число
3. Прибавить 1
4. Преобразовать результат обратно в строку
29 авг 12, 11:26    [13080772]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать следующее значение?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
qwerty112
Winnipuh
как запросом сделать такое:

есть таблица, в ней в поле name значения типа

myname
hisname
myname(1)
myname(97)
myname(34)

как получить значение myname(98)
для указанного префикса myname?

пока так
select 'myname(98)'


если "слишком просто" - поробуйте вопрос переформулировать ...


спасибо, добрый гость...
что там еще формулировать,
В данном примере, юзер знает префикс, скажем myname, должен получить по запросу "следующее" имя для него: myname(98)
Или указав hername получит нулл,
или hisname - должен получить по запросу hisname(1)
29 авг 12, 11:29    [13080793]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать следующее значение?  [new]
qwerty112
Guest
Winnipuh
спасибо, добрый гость...
что там еще формулировать,
В данном примере, юзер знает префикс, скажем myname, должен получить по запросу "следующее" имя для него: myname(98)
Или указав hername получит нулл,
или hisname - должен получить по запросу hisname(1)

:))

declare @t table (txt varchar(100))

insert into @t
select 'myname' union all
select 'hisname' union all
select 'myname(1)' union all
select 'myname(97)' union all
select 'myname(34)'

;with cte as
(select cast('<row name="'+replace(replace(txt, '(', '" val="'), ')', '')+'" />' as xml) as xz
from @t)

select a.name, isnull(max(a.val),0)+1 as new_val
from cte
cross apply
	(select t.c.value('@name', 'varchar(50)') as [name], t.c.value('@val', 'int') as [val]
	from cte.xz.nodes('/row') as t(c)) a
where a.name='myname'
group by a.name

name                                               new_val
-------------------------------------------------- -----------
myname                                             98
29 авг 12, 11:45    [13080968]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить