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

Откуда:
Сообщений: 774
Всем привет!
Есть таблица:

districts
idname
1Околтин
2Олтинкул
3Андижан

Эти значении надо писать так:
idname
1Oqoltin
2Oltinkul
3Andijan

Таблица districts имеет 458 строка. Ручной менять очень трудно.
Как можно сделать эта программно?
Заранее спасибо!
27 дек 11, 16:27    [11834075]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
ну так если Вы знаете правила по которым надо менять - в чем проблема? например Repalce Вам может помочь :)

только там не все так тривиально - надо рассматривать различные морфологические формы и применяются для такого рода задачь специальные словари.
27 дек 11, 16:51    [11834225]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
iap
Member

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

https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=546853&pg=-1

не, не то?
27 дек 11, 16:51    [11834228]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Repalce = Replace
27 дек 11, 16:51    [11834229]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
vindofs
Member

Откуда: دمشق
Сообщений: 623
SanyL
ну так если Вы знаете правила по которым надо менять - в чем проблема? например Repalce Вам может помочь :)

только там не все так тривиально - надо рассматривать различные морфологические формы и применяются для такого рода задачь специальные словари.


думаете, его переводчик адекватно донесет ему смысл???))))
27 дек 11, 16:53    [11834241]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
vindofs
SanyL
ну так если Вы знаете правила по которым надо менять - в чем проблема? например Repalce Вам может помочь :)

только там не все так тривиально - надо рассматривать различные морфологические формы и применяются для такого рода задачь специальные словари.


думаете, его переводчик адекватно донесет ему смысл???))))


а где я писал про переводчика? Дело в том, что нельзя просто заменить одну букву другой - надо рассматривать и сочитания букв...

ps словарь <> переводчик
27 дек 11, 16:55    [11834253]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SanyL
vindofs
пропущено...


думаете, его переводчик адекватно донесет ему смысл???))))


а где я писал про переводчика? Дело в том, что нельзя просто заменить одну букву другой - надо рассматривать и сочитания букв...

ps словарь <> переводчик
Наверно, намекают на трудности автора с русским языком.
27 дек 11, 16:58    [11834279]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
iap
Наверно, намекают на трудности автора с русским языком.


27 дек 11, 16:59    [11834287]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
Alimkulov
Member

Откуда:
Сообщений: 774
Есть буква Ў ее менять на буква O'
Знаю так не получится
REPLACE('БЎКА','Ў','O'');

Как можно менять?
27 дек 11, 17:18    [11834396]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Alimkulov
Есть буква Ў ее менять на буква O'
Знаю так не получится
REPLACE('БЎКА','Ў','O'');

Как можно менять?
Сдаётся мне, Вам нужен юникод. Может, ошибаюсь
Какого типа строковое поле?
27 дек 11, 17:33    [11834511]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
iap
Member

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

а по моей ссылке скрипты не устраивают?
27 дек 11, 17:33    [11834516]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Alimkulov
Есть буква Ў ее менять на буква O'
Знаю так не получится
REPLACE('БЎКА','Ў','O'');

Как можно менять?
У меня вот это работает:
SELECT REPLACE('БЎКА','Ў','O')
Не знаю, как Вы делаете...
Откуда у Вас в примере лишний апостроф, например?
27 дек 11, 20:15    [11835400]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
Alimkulov
Member

Откуда:
Сообщений: 774
iap
Alimkulov,

а по моей ссылке скрипты не устраивают?

Все отлично!
28 дек 11, 08:37    [11836742]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
Alimkulov
Member

Откуда:
Сообщений: 774
iap
Не знаю, как Вы делаете...
Откуда у Вас в примере лишний апостроф, например?

Проблема в том, что слова БЎКА по латинский пишется BO'KA
Думаю что мне поняли!
28 дек 11, 08:45    [11836783]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Alimkulov
iap
Не знаю, как Вы делаете...
Откуда у Вас в примере лишний апостроф, например?

Проблема в том, что слова БЎКА по латинский пишется BO'KA
Думаю что мне поняли!
Тогда апостроф удвоить надо:
SELECT REPLACE('БЎКА','Ў','O''')
28 дек 11, 09:11    [11836888]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Хотя я и не подозревал о такой чуднòй особенности латыни!
28 дек 11, 09:15    [11836897]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
Alimkulov
Member

Откуда:
Сообщений: 774
Всем спасибо!
Вот полный код кому понадобится:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE FUNCTION [dbo].[ufn_EnName] (@name NVARCHAR(255))  
RETURNS NVARCHAR(255)  
BEGIN  
 RETURN UPPER(LTRIM(RTRIM(  
  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  
  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  
  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  
  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  
  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  
  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  
  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(  REPLACE(
  @name,N'А', N'A'),N'Б', N'B'),N'В', N'V'),N'Г', N'G'),N'Д', N'D'),N'Е', N'E'),N'Ж', N'Zh'),N'З', N'Z')
  ,N'И', N'I'),N'Й', N'Y'),N'К', N'K'),N'Л', N'L'),N'М', N'M'),N'Н', N'N'),N'О', N'O'),N'П', N'P')
  ,N'Р', N'R'),N'С', N'S'),N'Т', N'T'),N'У', N'U'),N'Ф', N'F'),N'Х', N'Kh'),N'Ц', N'Ts'),N'Ч', N'Ch')
  ,N'Ш', N'Sh'),N'Щ', N'Shch'),N'Ъ', N'"'),N'Ы', N'Y'),N'Ь', N''''),N'Э', N'E'),N'Ю', N'Yu'),N'Я', N'Ya')
  ,N'Ё', N'Yo'),N'&#1202;', N'H'),N'&#1203;', N'h'),N'а', N'a'),N'б', N'b'),N'в', N'v'),N'г', N'g'),N'д', N'd'),N'е', N'e')
  ,N'ж', N'zh'),N'з', N'z'),N'и', N'i'),N'й', N'y'),N'к', N'k'),N'л', N'l'),N'м', N'm'),N'н', N'n'),N'о', N'o')
  ,N'п', N'p'),N'р', N'r'),N'с', N's'),N'т', N't'),N'у', N'u'),N'ф', N'f'),N'х', N'kh'),N'ц', N'ts'),N'ч', N'ch')
  ,N'ш', N'sh'),N'щ', N'shch'),N'ъ', N'"'),N'ы', N'y'),N'ь', N''''),N'э', N'e'),N'ю', N'yu'),N'я', N'ya'),N'ё', N'yo')
  ,N'ѓ', N'gj'),N'&#1117;', N'j'),N'ў', N'o'''),N'џ', N'dz'),N'&#1170;', N'G'''),N'&#1171;', N'g'''),N'&#1178;', N'q'''),N'&#1179;', N'q'''))))  
END

--вызов этого функция 

SELECT id 
      ,dbo.ufn_EnName([name]) 
FROM Districs

Результат:
idname
1OQ'OLTIN
2OLTINKO'L
3ANDIZHON
28 дек 11, 10:53    [11837478]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Alimkulov,
1. банально не работает как надо
SELECT dbo.ufn_EnName('пеРевед яХон Дарагой')	-- PEREVED YAKHON DARAGOY
Case-Insensitive
2. Боян (тынц, тынц)
28 дек 11, 17:13    [11841182]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Mnior
Alimkulov,
1. банально не работает как надо
SELECT dbo.ufn_EnName('пеРевед яХон Дарагой')	-- PEREVED YAKHON DARAGOY
Case-Insensitive
2. Боян (тынц, тынц)
Первая ссылка - боян в квадрате даже в этой теме!
28 дек 11, 17:24    [11841286]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
это вы переводите в связи с запретом русского языка?

ЗЫ. на казахском ТВ вроде бы запретили...
28 дек 11, 17:38    [11841373]     Ответить | Цитировать Сообщить модератору
 Re: Менять кириллицы значение на латинского  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 852
Winnipuh
это вы переводите в связи с запретом русского языка?

ЗЫ. на казахском ТВ вроде бы запретили...


Видимо, с кириллицы на латиницу переходят :-))). Еще в 97-м году было принято волевое решение, да, видимо, не все так гладко.
28 дек 11, 17:47    [11841439]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить