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

Откуда:
Сообщений: 1066
Мозг перестает работать, коллеги поддержите идеей. Собственно задачка проста как бы кажеться...))
declare
	@s varchar(100),
	@ss varchar(100),
	@p int
set @s = 'тра ля ля'
set @p = 0
set @ss = upper(left(@s, 1))
while @p < len(@s) begin
select @p
set @p = case when charindex(' ', @s, @p + 1) = 0 then len(@s) else charindex(' ', @s, @p + 1) end
end
select @ss
возращает позиции первых букв в строке, а вот как потом саму строку в вид:
Тря Ля Ля сделать....
7 сен 09, 15:48    [7627466]     Ответить | Цитировать Сообщить модератору
 Re: все первые буквы слов строки были в верхнем регистре  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
а вот как потом саму строку в вид:


STUFFом заменить?
7 сен 09, 15:50    [7627475]     Ответить | Цитировать Сообщить модератору
 Re: все первые буквы слов строки были в верхнем регистре  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
declare @s varchar(100), @r varchar(100);
set @s = 'тра ля ля';
set @r='';

SELECT @r=@r+CASE [Word] WHEN 0 THEN UPPER(C) ELSE C END FROM
(
 SELECT V.number, CASE WHEN STUFF(' '+@s,1,V.number-2,'')LIKE' [^ ]%'THEN 0 END[Word], SUBSTRING(' '+@s,V.number,1)C
 FROM master.dbo.spt_values V
 WHERE type='P' AND number BETWEEN 1 AND LEN(@s)+1
)T
WHERE number>1
ORDER BY number;
PRINT @r;
7 сен 09, 16:09    [7627634]     Ответить | Цитировать Сообщить модератору
 Re: все первые буквы слов строки были в верхнем регистре  [new]
aleks2
Guest
CREATE function UpFirstWordLettersEx(@Phrase as nvarchar(4000), @delims nvarchar(256))
returns nvarchar(4000)
as
begin
  set @Phrase=N' '+@Phrase
  select @Phrase=REPLACE(@Phrase, SUBSTRING(@Phrase, x.Number, 2), UPPER(SUBSTRING(@Phrase, x.Number, 2)))
  from dbo.Numbers x
  WHERE x.Number>0 AND x.Number<LEN(@Phrase)-1 AND CHARINDEX(SUBSTRING(@Phrase, x.Number,1), @delims)>0
return @Phrase
end
7 сен 09, 20:21    [7628882]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить