c# Oracle SQL 语句通配符

Posted

技术标签:

【中文标题】c# Oracle SQL 语句通配符【英文标题】:c# Oracle SQL statement wildcard 【发布时间】:2021-05-24 07:08:29 【问题描述】:

我正在尝试在 C# 中通过 oracle 使用通配符 (%)。常规 SQL 行可以正常工作,但通配符不返回任何内容。 Oracle DB 中的数据如下所示

A1+52345234 A1+88778686

我已经注释掉了我尝试过的那些不起作用的查询。不知道为什么,因为我可以将 debug 中的行直接复制到 sqlplus 行中,并且工作正常。它只是在 C# 中不起作用

在 Oracle 中使用通配符有什么技巧吗?我不断收到“未返回任何内容”

使用 Oracle.ManagedDataAccess.Client;

OracleConnection con = new OracleConnection();
con.ConnectionString = "User Id=" + login + ";Password=" + password + ";Data Source=localhost/" + dbname;
con.Open();
//string sql = "select my_public_id from patient_public_id where my_public_id like 'A%+%' ";
//string sql = "select my_public_id from patient_public_id where my_public_id like 'A" + (char)37 + "+" + (char)37 + "' ";
//string sql = "select my_public_id from patient_public_id where my_public_id like 'A" + "'%'" + "+" + "'%'" + "' ";
OracleDataAdapter adp = new OracleDataAdapter(sql, con);
DataSet ds = new DataSet();
adp.Fill(ds);

if (ds.Tables[0].Rows.Count > 0)

    dataGridView1.DataSource = ds.Tables[0];

else
    MessageBox.Show("Nothing returned");

【问题讨论】:

我也尝试将“'A%+%'”分配给一个字符串变量并使用它,仍然没有返回任何内容。 第 1 步 - 将 C# 放在一边。打开 Oracle 工具(TOAD 或其他)。让 SQL 在那里工作。一旦你让它工作了,就来这里分享有效的 SQL。在那之前,这不是 C# 问题。 您是否 100% 确定您指向了正确的数据库? 你的 C# 中的 select my_public_id from patient_public_id 有效吗? ds.Tables.Count的值是多少? 【参考方案1】:

它工作正常,问题是我手动将条目添加到我正在搜索的数据库中,但没有提交它们。哈哈。

【讨论】:

以上是关于c# Oracle SQL 语句通配符的主要内容,如果未能解决你的问题,请参考以下文章

oracle取前几条数据语句

oracle = : := 和变量绑定 oracle通配符和运算符

SQL-高级命令语句:like通配符,as别名,join连接

mssql中一个简单的模糊查询语句怎么写请教大侠们

C#中 SQL语句 带参数的like 查询怎么写

Oracle--通配符Escape转义字符模糊查询语句