Форум: "Базы";
Текущий архив: 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.007 c