Перевод кириллицы в латиницу

Schtass
Дата: 22.01.2009 12:17:06
Есть таблица table1 с полем F1. В этом поле имеются символы кирилицы. Потребно сделать сделать выборку из таблицы так, чтобы вся кирилицца была заменана на латиские символы. Другими словами, нужно конвертировать букву "Х" (ХЭ) в букву "Х" (ИКС), букву "y" (у) в букву "y" (и-грек). При этом регистр должон сохраняться.

Реально такое сделать средствами sql без создания собственной процедуры?
Schtass
Дата: 22.01.2009 12:25:22
Значить придеться свою функцию писать :(

А я уж подумал, что есть какое-нить волшОбное средство...

З.Ы. Строго не пинайте мну. Знаком со скулем на уровне рядового 1С-ника.
Мордор Держимордов
Дата: 27.01.2009 03:17:51
ALTER  procedure p_replace_cirilic_with_latin
 @znach [nvarchar] (4000) output
as
declare @SQL [nvarchar] (4000)
if object_id('t_cirilic_with_latin','U') is NULL
 BEGIN
  set @SQL =  ' CREATE TABLE t_cirilic_with_latin'
  + ' (cir [nvarchar] (1)'
  + ' ,lat [varchar] (3))'
  EXEC(@SQL)
  insert into t_cirilic_with_latin select 'А','A'
  insert into t_cirilic_with_latin select 'Б','B'
  insert into t_cirilic_with_latin select 'В','V'
  insert into t_cirilic_with_latin select 'Г','G'
  insert into t_cirilic_with_latin select 'Д','D'
  insert into t_cirilic_with_latin select 'Е','E'
  insert into t_cirilic_with_latin select 'Ё','E'
  insert into t_cirilic_with_latin select 'Ж','ZSH'
  insert into t_cirilic_with_latin select 'З','Z'
  insert into t_cirilic_with_latin select 'И','I'
  insert into t_cirilic_with_latin select 'Й','I'
  insert into t_cirilic_with_latin select 'К','K'
  insert into t_cirilic_with_latin select 'Л','L'
  insert into t_cirilic_with_latin select 'М','M'
  insert into t_cirilic_with_latin select 'Н','N'
  insert into t_cirilic_with_latin select 'О','O'
  insert into t_cirilic_with_latin select 'П','P'
  insert into t_cirilic_with_latin select 'Р','R'
  insert into t_cirilic_with_latin select 'С','S'
  insert into t_cirilic_with_latin select 'Т','T'
  insert into t_cirilic_with_latin select 'У','U'
  insert into t_cirilic_with_latin select 'Ц','TS'
  insert into t_cirilic_with_latin select 'Ч','CH'
  insert into t_cirilic_with_latin select 'Х','H'
  insert into t_cirilic_with_latin select 'Ш','SH'
  insert into t_cirilic_with_latin select 'Щ','TSH'
  insert into t_cirilic_with_latin select 'Ф','F'
  insert into t_cirilic_with_latin select 'Ы','I'
  insert into t_cirilic_with_latin select 'Э','A'
  insert into t_cirilic_with_latin select 'Ю','YU'
  insert into t_cirilic_with_latin select 'Я','YA'
  insert into t_cirilic_with_latin select 'Ъ',''
  insert into t_cirilic_with_latin select 'Ь',''
 END
set @SQL =  '''' + @znach + ''''
select @SQL = 'replace(' + @SQL + ',''' + cir + ''',''' + lat + ''')'
from  t_cirilic_with_latin

set @SQL = 'select ' + @SQL
--select @SQL
create table #F (v [varchar] (4000))
insert #f exec (@SQL) 
select  @znach = v from #f
drop table #f
/*
declare @sd [nvarchar] (4000)
set @SD = 'Общество с ораниченной ответственностью "АКВАФАРМ"'
exec p_replace_cirilic_with_latin @SD output
select @SD
*/

GO
vino
Дата: 27.01.2009 10:40:34
Имеет смысл хорошо продумать таблицу перевода в латиницу, так как по этому поводу разные стандарты есть! посмотри, например, [url=]http://textpattern.ru/html/transliteration-tables.htm[/url]
А сама функция-то элементарная, намного сложнее обеспечить обратный перевод