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

Откуда:
Сообщений: 6
Господа программисты, здравствуйте.
Я честно искал, но не нашел...

Есть поле Название организации. В него внесено много организаций в формате ООО "Название", ЗАО "Название", ОАО ПКФ "Назание" и т.п.
Можно ли напсать такой запрос, который заменит эти значения на Название ООО, Название ЗАО и Название ПКФ ООО соответственно ?
Или хотябы частично, т.е. ООО "Блаблабла" заменить на Блаблабла ООО ?

Я понимаю что это скорее всего как то просто делается, но только изучаю запросы, а нужно очень.
Если не трудно, подскажите как это реализовать или ткните носом где искать.
Спасибо.
25 мар 13, 20:57    [14094231]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
Old Daemon, вашу задачу я решил бы след.образом:
select	name = case when substring(t.name, 1, charindex('"', t.name) - 2) = 'OOO' then replace(replace(t.name, ' "', ''), 'OOO', '') + ' OOO'
		    when substring(t.name, 1, charindex('"', t.name) - 2) = 'ЗАО' then replace(replace(t.name, ' "', ''), 'ЗАО', '') + ' ЗАО'
		    when substring(t.name, 1, charindex('"', t.name) - 2) = 'ОАО' then replace(replace(t.name, ' "', ''), 'ОАО', '') + ' ОАО'
		    when substring(t.name, 1, charindex('"', t.name) - 2) = 'ОАО КПФ' then replace(replace(t.name, ' "', ''), 'ОАО КПФ', '') + ' ОАО КПФ'
	       else t.name
	       end


Под #t подразумевается ваша таблица. Решение не самое изящное, но оно мне первое пришло в голову, но я уверен, что можно и покрасивее сделать.
25 мар 13, 21:31    [14094309]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
Old Daemon
Member

Откуда:
Сообщений: 6
wizli,
большое спасибо, попробую
25 мар 13, 21:40    [14094329]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
Old Daemon
Member

Откуда:
Сообщений: 6
Попробовал, не получается :( Запрос отрабатывает но ничего не происходит...

select zakazchik = case when substring(tblMain.zakazchik, 1, charindex('"', tblMain.zakazchik) - 2) = 'ЗАО' then replace(replace(tblMain.zakazchik, ' "', ''), 'ЗАО', '') + ' ЗАО'
when substring(t.name, 1, charindex('"',tblMain.zakazchik) - 2) = 'ОАО' then replace(replace(tblMain.zakazchik, ' "', ''), 'ОАО', '') + ' ОАО'
else tblMain.zakazchik
end

Таблица tblMain
Поле zakazchik

SQL Server 2008
25 мар 13, 21:54    [14094363]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
zozozozozo
Guest
Old Daemon,

with zzz
as
(
select *
from(
		values('ООО "Название"'), ('ЗАО "Название"'), ('ОАО ПКФ "Название"')
	) as Z(name)
)
select SUBSTRING(
				name,
				CHARINDEX('"', name, 0) + 1,
				CHARINDEX('"', name, CHARINDEX('"', name, 0) + 1) - CHARINDEX('"', name, 0) - 1
			)
			+ ' ' +
		LEFT(name, CHARINDEX('"', name, 0) - 1)
from zzz;	   
25 мар 13, 21:59    [14094377]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
zozozozozo
Guest
Old Daemon,

тебе нужен update
25 мар 13, 22:01    [14094382]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
Шумилкин
Guest
DECLARE @org1 nvarchar (40)
DECLARE @org2 nvarchar (40)
DECLARE @org3 nvarchar (40)

SET @org1 = 'ОАО ПКФ "Название"'
SET @org2 = 'ЗАО "Название"'
SET @org3 = 'ООО "Название"'

SET @org1 = REPLACE (SUBSTRING (@org1,LEN(@org1) - CHARINDEX(' ', reverse(@org1))+1, CHARINDEX(' ', reverse(@org1))),'"','') + ' ' +
SUBSTRING (@org1, 0, LEN(@org1) - CHARINDEX(' ', reverse(@org1)) + 1)


SET @org2 = REPLACE (SUBSTRING (@org2,LEN(@org2) - CHARINDEX(' ', reverse(@org2))+1, CHARINDEX(' ', reverse(@org2))),'"','') + ' ' +
SUBSTRING (@org2, 0, LEN(@org2) - CHARINDEX(' ', reverse(@org2)) + 1)


SET @org3 = REPLACE (SUBSTRING (@org3,LEN(@org3) - CHARINDEX(' ', reverse(@org3))+1, CHARINDEX(' ', reverse(@org3))),'"','') + ' ' +
SUBSTRING (@org3, 0, LEN(@org3) - CHARINDEX(' ', reverse(@org3)) + 1)

SELECT @org1, @org2, @org3




Извиняюсь, если слишком запутано
26 мар 13, 00:38    [14094822]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
;with Data as (select * from(values
   ('ООО "Название"'), ('ЗАО "Название"'), ('ОАО ПКФ "Название"'))t(name))
select 
   name, case left(name,3)
   when 'ООО' then STUFF(name,1,4,'')+' ООО'
   when 'ЗАО' then STUFF(name,1,4,'')+' ЗАО'
   when 'ОАО' then STUFF(name,1,8,'')+' ПКФ ОАО'
   else name end re_name
from Data
26 мар 13, 09:20    [14095181]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить