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

Откуда:
Сообщений: 3
Подскажите пожалуйста как составить запрос который переводит все гласные в столбце в верхний регистр
11 ноя 13, 21:27    [15111772]     Ответить | Цитировать Сообщить модератору
 Re: Запрос для перевода всех гласных в верхний регистр  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31863
Flexi4
Подскажите пожалуйста как составить запрос который переводит все гласные в столбце в верхний регистр
Вложенные REPLACE
11 ноя 13, 23:43    [15112260]     Ответить | Цитировать Сообщить модератору
 Re: Запрос для перевода всех гласных в верхний регистр  [new]
Flexi4
Member

Откуда:
Сообщений: 3
если можно то поподробнее
12 ноя 13, 00:35    [15112470]     Ответить | Цитировать Сообщить модератору
 Re: Запрос для перевода всех гласных в верхний регистр  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Flexi4
если можно то поподробнее
http://lmgtfy.com/?q=tsql replace
declare @s varchar(50)='корова'
select replace(replace(@s,'о','О'),'а','А')
12 ноя 13, 05:31    [15112775]     Ответить | Цитировать Сообщить модератору
 Re: Запрос для перевода всех гласных в верхний регистр  [new]
kalakhary
Member

Откуда:
Сообщений: 17
Flexi4,
а еще можно разобрать строку посимвольно, проапдейтить и собрать заново.
как-то так:
create table #t (id int identity, txt varchar(50))
insert into #t values ('тестовая строка')
insert into #t values ('еще текст для проверки')

create table #chars(letter varchar(1))
insert into #chars values('е')
insert into #chars values('о')
insert into #chars values('а')
insert into #chars values('и')

select * from #t
create table #res (id int identity, id_str int, txt varchar(1))
insert into #res
select a.id, substring(a.txt, n.Number, 1)
from #t as a inner join master..spt_values as n on n.type = 'p'
where n.number > 0 and n.number <= len(a.txt)

update #res set txt = replace(txt, letter, upper(letter)) from #chars where txt = letter

select id_str ,replace(replace((select txt as 'data()' from #res t2 where t1.id_str = t2.id_str for xml path('') ),' ', '' ), ' ', ' ')
from #res t1 group by id_str

drop table #t
drop table #chars
drop table #res

Но, последовательной заменой всяко проще
12 ноя 13, 05:51    [15112782]     Ответить | Цитировать Сообщить модератору
 Re: Запрос для перевода всех гласных в верхний регистр  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
Flexi4,

declare @str varchar(100) = 'Мама мыла раму'

select
	upper(@str),
	lower(@str)
12 ноя 13, 09:11    [15113030]     Ответить | Цитировать Сообщить модератору
 Re: Запрос для перевода всех гласных в верхний регистр  [new]
Flexi4
Member

Откуда:
Сообщений: 3
Может кому пригодится

UPDATE sclad Set 'Название столбца'=replace(replace(replace(replace(replace(replace(replace(replace(replace(replace('Название столбца','ё','Ё'),'ю','Ю'),'я','Я'),'э','Э'),'ы','Ы'),'у','У'),'е','Е'),'и','И'),'о','О'),'а','А')

Спасибо всем за помощь
12 ноя 13, 15:42    [15116045]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить