Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
6-96917
zitrol
2002-11-20 00:05
2003.01.30
Вывести ip на экран!


3-96580
Alexander_K
2003-01-10 15:44
2003.01.30
Может версия не та?


4-97078
valmont
2002-12-15 15:51
2003.01.30
как получиь handle окна, кнопки и т.д.


14-96978
patrol
2003-01-10 18:32
2003.01.30
Ссылка на


6-96922
LeReve
2002-11-29 15:08
2003.01.30
ф-я connect завершается успехом раньше чем вызывается accept=(((




   Наверх