将包含任何ASCII字符(0到255)的字符串插入SQL Server中的VARCHAR字段

时间:2012-07-06 11:41:35

标签: sql-server vb6

我是SQL Server的新手,正在使用Visual Basic 6中的遗留应用程序。如何使用SQL INSERT命令将包含0到255之间的任何ASCII字符的字符串插入VARCHAR字段?

3 个答案:

答案 0 :(得分:1)

您可以将字符串编码为十六进制值序列,表示字符串字符的ASCII代码,将0x放在序列前面,然后将CAST(… AS varchar(n))应用于整个事物并使用该表达式在你的DDL声明中。

我的意思是,如果你的字符串是例如#X?!v,你会像这样插入

UPDATE table
SET column = CAST(0x23583F2176 AS varchar(n))
WHERE condition

因此,如果在某处有一个NUL字符,结果序列将在相应位置包含00

我真的不会“说”VB,但如果我这样做,我可能会考虑创建一个接受原始字符串并返回一串十六进制代码的函数,因此,在构建DDL命令时,我的VB指令可能看起来像这样:

cmd.CommandText = "UPDATE table SET column = CAST(0x" & HexEncode(RawString) & " AS varchar(n)) WHERE condition"

答案 1 :(得分:0)

假设您的项目引用了ADO,它就是这样的:

Dim oConn As Connection
Dim oCmd As Command

Set oConn = New Connection

oConn.Open <your connection string goes here>

Set oCmd = New Command

oCmd.ActiveConnection = oConn
oCmd.CommandText = "INSERT INTO TableName (ColumnName) VALUES('string')"
oCmd.Execute

答案 2 :(得分:0)

我手头没有ADO参数语法,但您应该能够使用ADO参数将常规字符串(包括NUL)插入varchar列。