R sqlexecute通配符

R sqlexecute wildcard

使用 RODBCext(和 Teradata),我的 SQL 查询通常需要限制,并通过 where 语句完成。但是,这并不总是必需的,不限制会有好处,但我想使用单个 SQL 查询。 (实际查询更复杂,并且有几个我试图在此处应用的实例)

为了 return 所有行,使用通配符似乎是下一个最佳选择,但似乎无法正常工作。例如,sql 查询是:

SELECT *
FROM MY_DB.MY_TABLE
WHERE PROC_TYPE = ? 

在为 proc_type 传递字符串时,以下内容有效:

sqlExecute(connHandle, getSQL(SQL_script_path), proc_type, fetch = TRUE) 

为了基本上绕过这个过滤器,我想传递一个通配符,以便所有记录都被 returned。

我试过 proc_type 设置为 '%''*'。也用反斜杠转义并用双引号括起来,但没有行被 returned,也没有产生任何错误。

您可以使用 COALESCE 来执行此操作:

SELECT *
FROM MY_DB.MY_TABLE
WHERE PROC_TYPE = COALESCE(?, PROC_TYPE);

如果您的参数为 NULL,它将选择 PROC_TYPE 与 PROC_TYPE 进行比较,后者将 return 一切。

至于您的通配符尝试,您必须切换到可以使用通配符的运算符。例如 =,而不是 LIKE。我认为你最终会遇到一些奇怪的边缘情况,尽管这取决于你的搜索词和该列中的数据,所以 COALESCE() 选项是更好的选择。