1

我对 SQL Server 比较陌生,并且正在使用 Visual Basic 6 开发旧版应用程序。如何使用 SQL INSERT 命令将可以包含 0 到 255 之间的任何 ASCII 字符的字符串插入到 VARCHAR 字段中?

4

3 回答 3

1

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

我的意思是,如果你的字符串是 eg #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"
于 2012-07-06T14:39:42.477 回答
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
于 2012-07-06T11:53:14.933 回答
0

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

于 2012-07-08T08:00:19.927 回答