Как записать непечатные символы в строковое значение?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

Как записать непечатные символы в строковое значение?

Сообщение kmi » 29 июн 2007, 13:39

Понимаю, как это сделать в Delphi:

Код: Выделить всё

'abcd'#10#13'efgh'
А как такую строку записать в поле varchar или BLOB в Firebird 1.5 c помощью скрипта? (нужен именно SQL-скрипт)

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 29 июн 2007, 14:27

Если именно это, то просто

'abcd
efgh'

kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

Сообщение kmi » 29 июн 2007, 14:48

Не работает. Нужен общий случай, включая символ #0.
Для примера:

Код: Выделить всё

INSERT INTO MY_TABLE (ID, DESCRIPTION, EXTRA) VALUES (GEN_ID(GEN_ID_MY_TABLE, 1), 'Временные', '21232F297A57A5A743894A0E4A801FC3'#6#0#0#0'ReadWrite');
Тут символы #6#0#0#0 должны войти :!: в значение поля EXTRA.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 июн 2007, 16:03

blob

kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

Сообщение kmi » 29 июн 2007, 17:04

:D Что значит "blob"?
Если то, что данные нужно записать в BLOB-поле, то я не спорю. Вопрос именно в том, как это сделать из скрипта, командами SQL.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 29 июн 2007, 17:09

Стандартными простейшими текстовыми скриптерами не прокатит. Бинарные данные заливаются через стримы, а не через тексты. Как это организовать - воля писателя интеллектуального скриптера.

kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

Сообщение kmi » 29 июн 2007, 17:17

Не очень верится. При занесении строки в базу символы заносятся именно посредством кодов. В этом смысле разницы между символом с кодом 0 и символом с кодом 65 нет никакой.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 29 июн 2007, 17:45

А мне пох, верится тебе или нет. И программам-скриптерам тоже. Раскинь мозгой, что есть #0 в текстовой строке.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 29 июн 2007, 17:54

kmi писал(а)::D Что значит "blob"?
А то и значит.
Если свой велосипед изобретать не хочешь - бери IBEScript, создавай и заливай.
В файле, котором лежит блоб, могут быть любые коды.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 02 июл 2007, 07:43

kmi писал(а):Не очень верится. При занесении строки в базу символы заносятся именно посредством кодов. В этом смысле разницы между символом с кодом 0 и символом с кодом 65 нет никакой.
В одной программулине из-зя моего недогляда в поле varchar попадали различные непечатные символы (просто мусор из памяти), что приводило ко множеству глюков - ошибках в ХП и даже падению FB, так что если есть сильное желание наступить на мои грабли, пхай в varchar что хочешь :)

Esperito
Сообщения: 10
Зарегистрирован: 09 авг 2007, 19:23

Сообщение Esperito » 09 авг 2007, 19:28

2 kmi: Попробуй использовать функцию AsciiChar() из ib_udf.

Ответить