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

Откуда:
Сообщений: 61
Требуется написать функцию ,которая заменит в строке все латинские символы на аналогичные русскиe.
То есть
'Cидорoв Oстап Maкарович'

Заменить на
'Cидоров Остап Макарович'

без использования латинских символов.

Написал вот такое
	set @str=replace( @str ,'c','с')
	set @str=replace( @str,'C','С')
	set @str=replace( @str,'O','О')
	set @str=replace( @str,'M','М')
	set @str=replace( @str,'T','Т')
	set @str=replace( @str,'o','о')
	set @str=replace( @str,'a','а')
	set @str=replace( @str,'A','А')
	set @str=replace( @str,'K','К')
	set @str=replace( @str,'H','Н')


Но неожиданно получил в результате
сидорОв Остап Макарович

Некоторые Большие буквы стали маленькими и наоборот
Все дело в том что функция replace не различает регистр,и производит замену и по Заглавным и по прописным буквам.
Как это побороть?
13 окт 16, 14:26    [19777865]     Ответить | Цитировать Сообщить модератору
 Re: Функция Replace и Заглавные буквы  [new]
кролик-зануда
Guest
Roman35
Как это побороть?


использовать case-sensitive collation
13 окт 16, 14:32    [19777892]     Ответить | Цитировать Сообщить модератору
 Re: Функция Replace и Заглавные буквы  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Roman35,

set @str = replace(@str, N'F' collate Cyrillic_General_BIN, N'Ф');

Только учтите, что там этих BIN'ов несколько. Посмотрите в справке разницу между ними и выберите себе наиболее подходящий.
13 окт 16, 14:38    [19777913]     Ответить | Цитировать Сообщить модератору
 Re: Функция Replace и Заглавные буквы  [new]
o-o
Guest
капец.
он ваяет скалярку.
ибо в инлайне куча сетов не катит
13 окт 16, 14:41    [19777923]     Ответить | Цитировать Сообщить модератору
 Re: Функция Replace и Заглавные буквы  [new]
Roman35
Member

Откуда:
Сообщений: 61
кролик-зануда,
Спасибо !
все получилось
13 окт 16, 15:30    [19778122]     Ответить | Цитировать Сообщить модератору
 Re: Функция Replace и Заглавные буквы  [new]
Roman35
Member

Откуда:
Сообщений: 61
Roman35,
То есть сделал вот так
	set @str=replace( @str,N'C' collate Cyrillic_General_BIN,'С')
	set @str=replace( @str,N'O' collate Cyrillic_General_BIN,'О')
	set @str=replace( @str,N'M' collate Cyrillic_General_BIN,'М')
	set @str=replace( @str,N'T'collate Cyrillic_General_BIN,'Т')
	set @str=replace( @str,N'o'collate Cyrillic_General_BIN,'о')

и все прекрасно заработало
13 окт 16, 15:34    [19778138]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить