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()
选项是更好的选择。
使用 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()
选项是更好的选择。