Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];

Вниз

HEX to Text   Найти похожие ветки 

 
Дима2003   (2003-01-14 12:45) [0]

В ячейке записан такой текст
\"ef\"f0\"e5\"e4\"f1\"f2\"e0\"e2\"e8\"f2\"fc \"f1

Каждый третий и четвёртый символы представляют код русской буквы. Подскажите как перевести такую строку в русский текст используя только TSQL


 
neXt   (2003-01-14 15:04) [1]

к сожалению, в MSSQL нет функций hextoint и inttohex, как например в SYBASE, к томуже convert не умеет преобразоввывать строку содержащую шестнадцетиричное число (например "0x12") в число, так что можно решить эту задачу только "в лоб" написав пару функций для преобразования. Что-то вроде:

create function CharHexToInt(@c char(1))
returns int
begin
if @c = "0" return 0
if @c = "1" return 1
if @c = "2" return 2
if @c = "3" return 3
if @c = "4" return 4
if @c = "5" return 5
if @c = "6" return 6
if @c = "7" return 7
if @c = "8" return 8
if @c = "9" return 9
if @c = "a" return 10
if @c = "b" return 11
if @c = "c" return 12
if @c = "d" return 13
if @c = "e" return 14
if @c = "f" return 15
return 0
end
go
create function HexToInt(@c char(2))
returns int
begin
declare
@i1 int,
@i2 int
select @i1 = dbo.CharHexToInt(SubString(@c, 1, 1))
select @i2 = dbo.CharHexToInt(SubString(@c, 2, 1))
return @i1 * 16 + @i2
end
go
create function StringHexToInt(@s varchar(255))
returns varchar(255)
begin
declare
@i int,
@cur char(1),
@res varchar(255)
select
@i = datalength(@s),
@res = ""
while @i > 0
begin
select @cur = SubString(@s, @i, 1)
if @cur = """"
select @res = @res + char( dbo.HexToInt( SubString(@s, @i+1, 2) ) )
select @i = @i - 1
end
return @res
end

использовать можно так:

select dbo.StringHexToInt("\""ef\""f0\""e5\""e4\""f1\""f2\""e0\""e2\""e8\""f2\""fc\""f1")



 
Дима2003   (2003-01-14 15:47) [2]

Спасибо!
Надеюсь мой вопрос не отнял у вас слишком много времени.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.124 c
1-96772
Opryshok
2003-01-22 18:10
2003.01.30
открытие html документа


1-96663
Brain
2003-01-21 14:13
2003.01.30
Создание компонентов


14-96954
MystiX
2003-01-12 19:35
2003.01.30
Httpdl


1-96835
Info
2003-01-21 00:51
2003.01.30
Текст из WebBrowser в Memo


3-96556
Makhanev A.S.
2003-01-11 13:46
2003.01.30
Как добавить поле в TTable???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский