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

Откуда: Kazan
Сообщений: 646
Например :
Mихаил - в этом слове может присутствовать буквы латинские 'M','x' и 'a'.


Понятно что можно воспользоваться функцией Replace().

Но! Replace берет без учёта регистра, т.е.

слово Михаил после преобрахования может выглядить так: МиХАил,
в том случае если в replace были применены руские буквы верхнего регистра
(UCase).

Может кто-нибудь делел подобное...
18 окт 04, 15:18    [1042205]     Ответить | Цитировать Сообщить модератору
 Re: Заменить некоторые схожие буквы лат на рус с учетом регистра..  [new]
AFire
Member

Откуда: UFA
Сообщений: 195
а функция ascii() не подойдет? или громоздко получится?
18 окт 04, 15:21    [1042217]     Ответить | Цитировать Сообщить модератору
 ascii()  [new]
Мудрый клён
Member [заблокирован]

Откуда: Kazan
Сообщений: 646
AFire
а функция ascii() не подойдет? или громоздко получится?

сейчас строю 'вилосипед' из Ascii.
ума неприложу как выловить и вставить ?!
18 окт 04, 15:25    [1042246]     Ответить | Цитировать Сообщить модератору
 Re: Заменить некоторые схожие буквы лат на рус с учетом регистра..  [new]
Фирюза
Member

Откуда: Уфа
Сообщений: 106
цикл "пока не конец слова" substring'ом отрезать символ, проверить его на латинизмость и если да, то заменить - а для замены большой case написать.
18 окт 04, 15:31    [1042294]     Ответить | Цитировать Сообщить модератору
 Re: Заменить некоторые схожие буквы лат на рус с учетом регистра..  [new]
Алексей Р.
Member

Откуда:
Сообщений: 304
Если от этой функции зависит быстродействие тогда лучше сделать
без всяких проверок, а просто заменять ВСЕ символы в строке
по таблице в 255 элементов в котором заполнены ВСЕ печатные символы как русские так и латинские.
Где код индексом служит
код символа который нужно заменить,
а элементом символ на который нужно заменить.
Массив лучше сделать объявить глобальным.

Пример
Массив = {...'&','!','@',...'0','1'... 'А','В','С',........,'а','б','с',.........,'А','Б','В',...'а','б','в',...}

цикл по i
s = Символ( Массив[ КодСимвола(Субстрока(s, i, 1)) ] );
конеццикла
19 окт 04, 07:27    [1043560]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Заменить некоторые схожие буквы лат на рус с учетом регистра..  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Алексей Р.,

А чем не решение замена всех символов при помощи REPLACE, потом отделить первый символ при помощи SUBSTRING, сделать их UPPER, а остальные LOWER.
Велосипед? но рабочий!
25 апр 17, 12:11    [20432202]     Ответить | Цитировать Сообщить модератору
 Re: Заменить некоторые схожие буквы лат на рус с учетом регистра..  [new]
Добрый Э - Эх
Guest
Aleksey br,

молодец, что ответил... ТС 13 лет сидит и ждет твоего мнения. ;)
25 апр 17, 12:15    [20432219]     Ответить | Цитировать Сообщить модератору
 Re: Заменить некоторые схожие буквы лат на рус с учетом регистра..  [new]
rnk
Member

Откуда:
Сообщений: 126
Добрый Э - Эх,
Вопрос задан, что ж не ответить...

Грамотно - использовать COLLATE. Например, так:
set @string=REPLACE(@string,'M','М' COLLATE Cyrillic_General_BIN)
25 апр 17, 13:06    [20432433]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить