更新
事实证明这是非官方Oracle数据提供商的一个问题
我刚开始使用this recently released official beta,这个问题就消失了。
我有一个dot net core项目,我正在使用this从Oracle数据库中获取数据。这适用于大多数数据,但有时我会遇到异常。
<%= simple_form_for @applicant, url: applicants_profile_path, method: :patch do |f| %>
<%= f.input :first_name %>
<%= f.button :submit, "submit" %>
<% end %>
当我使用SQL客户端将数据导出为csv时,列中似乎会出现一些特殊字符导致此问题。
当我在记事本上打开它时,我在第2行看到了一个额外的空间
“TEST”
“测试”
但是当我在Submlime上打开它时,我看到this special character。
如何忽略此类字符并继续获取数据?
这是异常和堆栈跟踪:
“索引和长度必须指代字符串中的位置。\ r \ n参数名称:长度”
using (OracleConnection connection = new OracleConnection(connectionString))
{
OracleCommand command = new OracleCommand(selectStatement, connection);
command.Connection.Open();
using (OracleDataAdapter da = new OracleDataAdapter(command))
{
da.Fill(dataTable); // line throws exception shown below
command.Connection.Close();
da.Dispose();
}
}
答案 0 :(得分:0)
根据您的SELECT
语句,您可以使用正则表达式替换所有“特殊字符”。这可能取决于您想要替换它们的内容!如果它们只发生在值的末尾,那么你会想要这样的东西:
REGEXP_REPLACE(mycolumn, '[^[:print:]]+$', '')
这将替换值末尾的所有不可打印的字符。如果你在字符串中间也有不可打印的字符,你可能想要用空格替换它们,或者根本没有替换它们,如上所述:
REGEXP_REPLACE(mycolumn, '[^[:print:]]+', '')
另一种可能性是,这是由Oracle客户端引起的,或者是由导出功能写入CSV文件。
希望这有帮助。