我正在尝试将µ
之类的字符作为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,但它并没有真正帮助。
如何在不更改数据的情况下插入包含这些字符的数据?
答案 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 '\'