Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Аналог VB-функции StrConv(sText, vbProperCase)  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 322
Добрый день.

Имеется ли в T-SQL какая-то функция, приводящая каждую первую букву в новом слове к заглавной.
Например:
иванов иван иванович -> Иванов Иван Иванович
В VB для этих целей есть StrConv(sText, vbProperCase)
А в T-SQL есть что-то подобное?

Заранее спасибо.
15 фев 12, 12:20    [12094486]     Ответить | Цитировать Сообщить модератору
 Re: Аналог VB-функции StrConv(sText, vbProperCase)  [new]
user89
Member

Откуда:
Сообщений: 2083
Игорь1973,
а как узнать, что это новое слово? Разделитель пробел?
15 фев 12, 12:42    [12094787]     Ответить | Цитировать Сообщить модератору
 Re: Аналог VB-функции StrConv(sText, vbProperCase)  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Игорь1973,

По словам нет. Если просто строку, то можно так
declare @str nvarchar(100);
set @str = 'иванов иван иванович';
select stuff(@str,1,1,upper(left(@str,1)))

а на слова придется делить самому.
15 фев 12, 12:45    [12094810]     Ответить | Цитировать Сообщить модератору
 Re: Аналог VB-функции StrConv(sText, vbProperCase)  [new]
user89
Member

Откуда:
Сообщений: 2083
Игорь1973,
а как узнать, что это новое слово? Разделитель пробел?
Если так, то один из вариантов:

declare @str varchar(50)
set @str = 'qWErt YUIO    vbvb'

select (
 select case substring(@str, number-1, 1) when ' ' then upper(substring(@str, number, 1)) else lower(substring(@str, number, 1)) end
 from master..spt_values 
 where type = 'P' 
 and number between 1 and len(@str)
for xml path(''),type).value('text()[1]','NVarChar(max)')


Result
Qwert Yuio Vbvb
15 фев 12, 12:45    [12094812]     Ответить | Цитировать Сообщить модератору
 Re: Аналог VB-функции StrConv(sText, vbProperCase)  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
А можно просто реализовать вызов StrConv через CLR.
15 фев 12, 12:57    [12094953]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить