Преобразование RTF в varchar в SQL Server

Я пытаюсь преобразовать varbinary в varchar, но это вызывает появление некоторых нежелательных символов, как показано ниже. Может кто-нибудь дайте мне знать, есть ли лучший способ сделать это.

Я пытаюсь выполнить следующий запрос

SELECT
    BLOB_CONTENTS, 
    CONVERT(VARCHAR(MAX), [BLOB_CONTENTS]), 
    CONVERT(NVARCHAR(MAX), [BLOB_CONTENTS]) 
FROM 
    [hie_temp].[V500].[CE_BLOB] 
WHERE
    EVENT_ID = '760365' 

Код varbinary выглядит так:

0x05028A64F2A9488645100E84053281148A4324080A0412A1209E4C2791CB2208EC7A3F2090C7

Я получаю что-то вроде этого

Šdò©H†E„2ŠC$ ¡ žL'‘Ë"ìz? Ç…ˆÔl8Œ£hÐr-ŒDBy¨O)B„IÑH\CdòA"¤Ò£Ä²)L‚V “…‚‘<¦H©@‰$â!$‡$“é¸ù°A&ˆ Ö˜M–”DŠ‘EåBI6Ý á2ˆœ (•H¥(á„Nœ“H$ÂIR9")•ñ‘’¸€„A)J¶«|xb1ÊÅã‘Ä€ŒLéE£ XÄr 

поделитесь запросом, который вы пробовали.

Vinit 06.07.2018 01:25

Выберите BLOB_CONTENTS, CONVERT (varchar (max), [BLOB_CONTENTS]), CONVERT (nvarchar (max), [BLOB_CONTENTS]) FROM [hie_temp]. [V500]. [CE_BLOB], где EVENT_ID = '760365'

Karthik Daibala 06.07.2018 01:45

У меня есть шестнадцатеричный код, начинающийся с 0x05028 от Oracle

Karthik Daibala 06.07.2018 01:53

Пометьте свою СУБД

Hooman Bahreini 06.07.2018 02:06

как это сделать ?

Karthik Daibala 06.07.2018 02:13

Какое содержание у вашего блоба? Вы уверены, что его можно преобразовать в текст?

Hooman Bahreini 06.07.2018 02:22

Это формат RTF

Karthik Daibala 06.07.2018 02:25

Если у вас действительно был исходный файл RTF, находящийся в проводнике, и вы открыли этот файл в блокноте ... вот что вы бы увидели - куча странных символов. Ожидаете ли вы, что ваш varchar будет полужирным и подчеркнутым? Это не так. До сих пор вы объяснили проблему, которая состоит из Oracle, SQL Server, BLOB-объектов, файлов RTF, varchars. Это очень запутано. Вам нужно определить четкую проблему. "вызвать некоторые нежелательные символы" - это нет определение проблемы.

Nick.McDermaid 06.07.2018 06:54
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
8
8 241
1

Ответы 1

RTF - это не простой текст, вам нужно написать процедуру / функцию для преобразования RTF в текст, см. здесь.

В качестве альтернативы вы можете сделать это на своем языке программирования, см. эта почта для примера на C#.

Большое спасибо за этот пост. Моя проблема здесь в том, что есть blob-объект, который уже создан в Oracle для файлов RTF. Итак, я извлек эти капли на сервер SQl, используя SSIS как varbinary. Теперь я хочу декодировать эту переменную в текст. Обратите внимание: varbinary начинается с 0x05 и не является четным числом. Пожалуйста, поправьте меня, если я что-то пропустил.

Karthik Daibala 06.07.2018 03:08

вы можете попробовать первую ссылку (проект кода) выше, вам может потребоваться сначала преобразовать свой varbinary в nvarchar (max), а затем передать его функции RTF2Text.

Hooman Bahreini 06.07.2018 03:14

что такое код проекта один? извините, я новичок в этом. ты можешь быть более ясным?

Karthik Daibala 06.07.2018 03:23

Я создал функцию и передал ей свой varbinary. но я получаю результат, как показано ниже. ȅ 撊 ꧲ 虈 ၅ 萎 ㈅ᒁ 䎊 ࠤЊ ꄒ 鸠

Karthik Daibala 06.07.2018 03:25

вы пробовали преобразовать свой varbinary в nvarchar (max), а затем передать его в RTF2Text?

Hooman Bahreini 06.07.2018 03:27

Я пробовал это Выбрать BLOB_CONTENTS, [dbo]. [RTF2Text] (convert (nvarchar (max), BLOB_CONTENTS)) FROM [hie_temp]. [V500]. [CE_BLOB] где EVENT_ID = '760365' поправьте меня, если я ошибаюсь

Karthik Daibala 06.07.2018 03:29

да, это то, что я имел в виду ... не уверен! вы можете проверить, работает ли этот метод, создав образец test.rtf и вставив его в свою базу данных SQL ... возможно, с вашим varbinary произошло преобразование формата при извлечении его из Oracle и копировании в sql.

Hooman Bahreini 06.07.2018 03:34

образец файла действительно работал. Но капля, которую я извлек из оракула, не работает. Они дают мне каких-то странных персонажей

Karthik Daibala 06.07.2018 03:53

Ах, вы сузили проблему ;-)

Hooman Bahreini 06.07.2018 03:55

Есть ли способ проверить, в чем проблема с форматом, и как ее решить?

Karthik Daibala 06.07.2018 03:56

Я не уверен, что там происходит, но это совершенно новый вопрос (вы можете задать новый вопрос и объяснить шаги, которые вы выполнили)

Hooman Bahreini 06.07.2018 03:59

Другие вопросы по теме