Sql Odp驱动程序通配符

Sql Odp驱动程序通配符,sql,oracle,odp.net,Sql,Oracle,Odp.net,我创建了一个wpf应用程序,添加了一个带有ODP管理的驱动程序连接的数据集。查询工作正常,但我似乎无法让这一个发挥良好: SELECT * FROM EMPLOYEE WHERE lastname LIKE '%' + :lastname + '%' 或 查询生成器抛出“内部错误,窗格配置无效”,查询不返回任何内容。如果我在:lastname中传递通配符,它工作正常,但我需要它出现在查询中。正确的语法是什么 SELECT * FROM EMPLOYEE WHERE la

我创建了一个wpf应用程序,添加了一个带有ODP管理的驱动程序连接的数据集。查询工作正常,但我似乎无法让这一个发挥良好:

SELECT *
FROM EMPLOYEE
WHERE lastname LIKE '%' + :lastname + '%'

查询生成器抛出“内部错误,窗格配置无效”,查询不返回任何内容。如果我在:lastname中传递通配符,它工作正常,但我需要它出现在查询中。正确的语法是什么

    SELECT *
    FROM EMPLOYEE
    WHERE lastname LIKE :lastname

    :lastname = '%Bob%' --Works

它看起来像这样吗

  SELECT *
  FROM EMPLOYEE
  WHERE lastname LIKE '%Bob%'

这不适用于PL-SQL:

SELECT *
FROM EMPLOYEE
WHERE lastname LIKE '%' + :lastname + '%'
这应:

SELECT *
FROM EMPLOYEE
WHERE lastname LIKE '%' || :lastname || '%'
但如果没有,我理解。当你说查询生成器时,我假设我们谈论的是VS DataSet/TableAdapter设计器,对吗?我在一些PL-SQL上看到过很多问题,所以请尝试以下其他方法:

SELECT *
FROM AS_PRODUCT
WHERE AS_PRODUCT.NAME LIKE CONCAT( '%', CONCAT(:lastname , '%'));
但仍然会得到“无效窗格配置”

一件事是,一些地方将为生产和测试设置一个模式,该模式是相同的设计,在相同的服务器上,但具有不同的名称。因此,您使用指向一个模式的特定连接字符串设置数据集,并且查询生成器在数据集设计器生成的代码中将该模式前缀粘贴到整个SQL中。然后,通过更改web.config中的文本,将连接字符串切换到具有不同模式名称的产品,所有生成的SQL都不起作用。所以我总是要求两台服务器运行相同的模式、名称和所有内容来避免这个问题

我之所以提出这个问题,是因为通过在ADO.NET中手工编写查询,可以避免这两个问题

SELECT *
FROM AS_PRODUCT
WHERE AS_PRODUCT.NAME LIKE CONCAT( '%', CONCAT(:lastname , '%'));