如何在Advantage SQL数据库中插入特殊字符?

时间:2016-04-29 10:21:59

标签: vb.net encoding import advantage-database-server

我正在尝试将µ之类的字符作为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,但它并没有真正帮助。

如何在不更改数据的情况下插入包含这些字符的数据?

1 个答案:

答案 0 :(得分:2)

我不知道这是否会回答你的问题:

使用参数化查询:

using (SqlCommand com = new SqlCommand("INSERT INTO your_Table (column) " +
                                       "VALUES (@INPUTVALUE)", con))
    {
    com.Parameters.AddWithValue("@INPUTVALUE", @"""%$#@?,.;");
    com.ExecuteNonQuery();
    }

要转义LIKE表达式中的特殊字符,请在其前面加上转义字符。您可以选择使用ESCAPE关键字的转义字符串。 (作为MSDN参考资料)

例如,这会转义%符号,使用\作为转义字符:

从your_table中选择*,其中您的字段类似于'%15 \%off%' ESCAPE' \#39;

如果您不知道字符串中将包含哪些字符,并且您不想将它们视为通配符,则可以使用转义字符为所有通配符添加前缀,例如:

set @msearchString = replace(
                replace(
                replace(
                replace(@myString,'\','\\'),
                        '%','\%'),
                        '_','\_'),
                        '[','\[') 

(注意你也必须逃避你的转义字符)。然后你可以使用这样的东西:

select * from table where yourcolumnfield like '%' + @msearchString + '%' ESCAPE '\'
相关问题