我们如何使用sql server 2005处理ascii字符?我可以使用哪种数据类型来存储ascii字符,主要是控制字符?
例如:我有一个文件,其中的字符串由一些控制字符(如退格键)分隔。我需要将此文件读入我的sql server表。我想知道我可以用来存储它们的数据类型(char,nchar,varchar,..)。
此外,我见过的所有字符串拆分函数都适用于,
等普通分隔符。但我的分隔符是退格\b
。
答案 0 :(得分:2)
大多数数据库允许您存储包含任何字符代码的字符字段。它更可能是您的数据库访问库(JDBC,ODBC,?)的限制,它限制了您可以从程序中检索和存储的内容。
话虽如此,将字段中的非打印字符转换为C字符转义序列或URI编码可能是明智之举。然后,当您从DB中读取字段时,将它们转换回原始字符代码。
例如,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 :(得分:1)
我从this question知道NVARCHAR会满足您的要求,因为它涉及如何摆脱不可打印的ASCII字符。
您可以在该问题中使用我的答案作为替换适用字符的基础,其中某些内容可以更好地使用split / substring函数。逗号不是一个很好的选择,因为它自然会出现在您的数据中,但~
非常安全。 〜是你按住shift键并按下[number]一个键左边的键时的字符(假设是英文QWERTY / etc)。
答案 2 :(得分:0)
作为另一个选项,您可以序列化文件并将其存储在sql server table / binary datatype
中答案 3 :(得分:0)
您可以使用BINARY或VARBINARY将数据存储为位流。你可以实际存储你想要的任何东西,SQL并不关心。如果您不担心对数据执行文本操作,则此选项非常有效。