Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.30;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
4-97105
feniks1
2002-12-14 17:39
2003.01.30
как быть без компонентов


1-96779
Armageddon
2003-01-22 10:00
2003.01.30
BitBtn


14-96983
polizei
2003-01-13 10:19
2003.01.30
Вопрос


1-96808
Smok_er
2003-01-19 17:18
2003.01.30
MDIForm without Child Captions


1-96773
Newer
2003-01-22 18:37
2003.01.30
TDateEdit из RX Library