如何将特殊字符插入 Advantage SQL 数据库?
Posted
技术标签:
【中文标题】如何将特殊字符插入 Advantage SQL 数据库?【英文标题】:How can I insert special characters into Advantage SQL database? 【发布时间】:2016-04-29 10:21:59 【问题描述】:我正在尝试将 µ
之类的字符插入为 varchar,但它不起作用,我收到错误消息,上面写着
无法将 Unicode 字符转换为代码页字符
因为是医疗文件,我不能更改任何数据。该程序是用vb.net编写的,它将csv数据插入Advantage SQL,所以我正在尝试这个功能
Public Shared Function Convert(ByVal input As String) As String
Dim OriginalCodierung As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim iso8859 As System.Text.Encoding = System.Text.Encoding.GetEncoding("iso-8859-1")
Dim enc As System.Text.Encoding = System.Text.Encoding.Default
Dim OriginalBytes As Byte() = OriginalCodierung.GetBytes(input)
Dim result As Byte() = System.Text.Encoding.Convert(OriginalCodierung, iso8859, OriginalBytes)
Dim s As String = enc.GetString(result)
Return s
End Function
它在 iso8859 中编码 utf8,但它并没有真正帮助。
如何在不更改数据的情况下插入带有这些字符的数据?
【问题讨论】:
我不熟悉那个数据库,但在我使用过的其他数据库中,varchar
只存储单字节字符。例如,在 SQL Server 中,您需要将nvarchar
用于双字节字符。你的数据库有对应的数据类型吗?如果不是,那么我认为您必须将数据存储为字节而不是字符。
优势数据库服务器只有char devzone.advantagedatabase.com/dz/webhelp/Advantage8.1/server1/…
【参考方案1】:
我不知道这是否会回答你的问题:
使用参数化查询:
using (SqlCommand com = new SqlCommand("INSERT INTO your_Table (column) " +
"VALUES (@INPUTVALUE)", con))
com.Parameters.AddWithValue("@INPUTVALUE", @"""%$#@?,.;");
com.ExecuteNonQuery();
要转义 LIKE 表达式中的特殊字符,请在它们前面加上转义字符。您可以选择与 ESCAPE 关键字一起使用的转义字符。 (作为 MSDN 参考)
例如,这会转义 % 符号,使用 \ 作为转义字符:
select * from your_table where yourcolumnfield like '%15\% off%' ESCAPE '\'
如果您不知道字符串中有哪些字符,并且不想将它们视为通配符,则可以在所有通配符前面加上转义字符,例如:
set @msearchString = replace(
replace(
replace(
replace(@myString,'\','\\'),
'%','\%'),
'_','\_'),
'[','\[')
(请注意,您也必须转义转义字符)。然后你可以使用这样的东西:
select * from table where yourcolumnfield like '%' + @msearchString + '%' ESCAPE '\'
【讨论】:
好吧,实际上它并没有真正转换这些字符,但幸运的是我找到了解决方案,我只需要像这里一样将编码更改为 1252:Dim iso8859 As System.Text.Encoding = System.Text.Encoding .GetEncoding(1252 ) 还是谢谢以上是关于如何将特殊字符插入 Advantage SQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
将特殊字符(大于/小于或等于符号)插入 SQL Server 数据库