1

私は SQL Server に比較的慣れておらず、Visual Basic 6 のレガシー アプリで作業しています。SQL INSERT コマンドを使用して、0 から 255 までの任意の ASCII 文字を含む文字列を VARCHAR フィールドに挿入するにはどうすればよいですか?

4

3 に答える 3

1

文字列を文字列の文字のASCIIコードを表す16進値のシーケンスにエンコードし、シーケンスの0x前に配置してから、全体に適用して、その式をDDLステートメントで使用できます。CAST(… AS varchar(n))

私が言いたいのは、もしあなたの文字列が例えば#X?!vだったら、あなたはそれをこのように挿入するでしょう

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

したがって、どこかにNUL文字があった場合、結果のシーケンスに00は対応する位置が含まれます。

私は実際にはVBを「話す」ことはしませんが、そうすると、生の文字列を受け入れて16進コードの文字列を返す関数を作成することを検討するでしょう。したがって、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 パラメーターの構文は手元にありませんが、ADO パラメーターを使用して一般的な文字列 (NUL を含む) を列に挿入できるはずですvarchar

于 2012-07-08T08:00:19.927 に答える
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 に答える