Как работать с управляющими символами ascii на сервере sql? - PullRequest
1 голос
/ 05 января 2010

Как мы можем обрабатывать символы ascii, используя SQL Server 2005? Какой тип данных я могу использовать для хранения символов ascii, в основном управляющих символов?

Например: у меня есть файл со строками, разделенными некоторыми управляющими символами, такими как backspace. Мне нужно прочитать этот файл в мои таблицы SQL Server. Я хочу знать, какой тип данных (char, nchar, varchar, ..) я могу использовать для их хранения.

Кроме того, все функции разделения строк, которые я видел, хорошо работают с обычными разделителями, такими как ,. Но мой разделитель - это пробел \b.

Ответы [ 4 ]

2 голосов
/ 05 января 2010

Большинство баз данных позволит вам хранить символьные поля, содержащие любой код символа. Скорее всего, это ограничение вашей библиотеки доступа к БД (JDBC, ODBC,?), Которое ограничивает то, что вы можете извлекать и хранить из программы.

При этом, вероятно, целесообразно преобразовывать непечатаемые символы в ваших полях во что-то вроде escape-последовательностей символов C или кодировок URI. Затем вы конвертируете их обратно в исходные коды символов при чтении полей из БД.

Например, строка C "Hello,\nW\borld.\a" может быть закодирована несколькими способами:

Hello,\\nW\\borld.\\a         (Note: each \\ is a single \ char)
Hello,%0AW%08orld.%07
Hello,\\u000AW\\u0008orld.\\u0007
(etc.)
1 голос
/ 05 января 2010

Я знаю из этого вопроса , что NVARCHAR будет соответствовать тому, что вы просите, потому что он имеет дело с тем, как избавиться от непечатных символов ASCII.

Вы можете использовать мой ответ на этот вопрос в качестве основы для замены применимых символов чем-то, что будет лучше работать с функциями разбиения / подстроки. Запятая не является хорошим выбором, потому что она естественно встречается в ваших данных, но ~ довольно безопасно. Символ ~ - это символ, который вы получаете, удерживая клавишу Shift и нажимая клавишу слева от клавиши [номер] один (при условии, что на английском языке QWERTY / и т. Д.).

0 голосов
/ 05 января 2010

Вы можете сохранить данные в виде битового потока, используя BINARY или VARBINARY. Вы можете хранить в ней все, что захотите, SQL не волнует. Если вы не беспокоитесь о выполнении текстовых операций над вашими данными, эта опция довольно эффективна.

0 голосов
/ 05 января 2010

В качестве другого варианта вы можете сериализовать файл и сохранить его в таблице SQL Server / двоичный тип данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...