如何将特殊字符插入 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中插入含@、#等特殊字符的字符串

将特殊字符(大于/小于或等于符号)插入 SQL Server 数据库

Advantage 和 PHP - 错误 6303:超过最大 Advantage 数据库服务器连接数

如何用sql向数据库中插入包含特殊字符的字

怎么将带特殊字符的字符串存入sqlserver的某个字段

源数据和目标数据不匹配。我们如何插入特殊字符,如 5±3°C 和 -