Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Преобразование данных.
|
|||
|---|---|---|---|
|
#18+
Господа, совет нужен. Подскажите технологию. Надо при занесении новых данных в таблицу, преобразовывать данные из пары стольцов из русского в латиницу. Как это реализовать, можно это сделать средствами SQL? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 05:55 |
|
||
|
Преобразование данных.
|
|||
|---|---|---|---|
|
#18+
Посмотри http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=1733 Чтобы не писать кучу set'ов можно создать табличку перекодировки где русским буквам будут соответствовать английские буквы и символы. А потом меняй в цикле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 06:25 |
|
||
|
Преобразование данных.
|
|||
|---|---|---|---|
|
#18+
Никак не отвыкну от приемов работы с 6.5 - 7.0. С помощью UDF вообще легко: Create Table Codetable (rus Char(1) Not Null, Lat Varchar(2)) go Insert Into Codetable Select 'а', 'a' Insert Into Codetable Select 'б', 'b' Insert Into Codetable Select 'в', 'v' Insert Into Codetable Select 'г', 'g' Insert Into Codetable Select 'ж', 'zh' Insert Into Codetable Select 'ш', 'sh' Insert Into Codetable Select 'ъ', null -- ... go Create Function Transcode (@s Varchar(50)) Returns Varchar(50) Begin Select @s = Replace(@s, rus, Isnull(lat, '')) From Codetable Return @s End go select dbo.Transcode('абвгъжш') drop function Transcode go drop table Codetable go Используй хоть в триггере на вставку с любым количеством записей в Inserted. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 08:03 |
|
||
|
Преобразование данных.
|
|||
|---|---|---|---|
|
#18+
Да в том все и дело, что 7.0 Если использовать процедуру с ссылки выше, как ее вызывать? Не делать же exec процедуры для каждого столбца таблицы, каждой буквы по отдельности? (сделал, все работает, применимо к одному столбцу. exec usp_search_replace @tname='uinfo', @klname = 'FAM1', @rsymv='а', @esymv='а' exec usp_search_replace @tname='uinfo', @klname = 'FAM1', @rsymv='б', @esymv='b' ... Но мне надо применимо к нескольким). У меня с SQL опыта нет, извините за несуразные вопросы. Пришлось осваивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 10:36 |
|
||
|
Преобразование данных.
|
|||
|---|---|---|---|
|
#18+
В 7.0 вся сложность в том, что если необходимо обработать сразу несколько записей то придется строить по ним цикл, например курсором. Допустим нужно перекодировать поля field1 и field2 во всех записях таблицы Table1, и таблица Codetable из предыдущего примера создана и заполнена. Create Procedure "sp1" As Set Nocount On Declare @fld1 Varchar(50), @fld2 Varchar(50) Declare cr Cursor local for Select field1, field2 From Table1 Open cr Fetch Next From cr Into @fld1, @fld2 While @@Fetch_Status = 0 Begin Select @fld1 = Replace(@fld1, rus, Isnull(lat, '')), @fld2 = Replace(@fld2, rus, Isnull(lat, '')) From Codetable Update Table1 Set field1 = @fld1, field2 = @fld2 Where Current Of cr Fetch Next From cr Into @fld1, @fld2 End Close cr Deallocate cr Return Go exec sp1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 11:15 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32009790&tid=1826152]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 381ms |

| 0 / 0 |
