当前位置: 首页 > 面试题库 >

在RODBC报价单中的子句-SAP HANA

端木弘方
2023-03-14
问题内容

我似乎无法FROM使用RODBC的以下条款来工作sqlQuery。我接受了@Lars Br的建议。的报价,但它仍然无法正常工作。我是

我知道占位符的作品,因为我在qlikview中使用过

所以下面的代码有效

table <- sqlQuery(myconn, 'SELECT *
                      FROM "_SYS_BIC"."mytable.TABLE/ALL_DATA"')

但是当我尝试添加以下内容时(我在传递日期参数)

table <- sqlQuery(myconn, 'SELECT *
                      FROM "_SYS_BIC"."mytable.TABLE/ALL_DATA"')   
                    ('PLACEHOLDER' = ('$$AS_OF_DATE$$',
                     '2017-01-09'),
                    'PLACEHOLDER' = ('$$ABCD_ONE$$',
                     '0'),
                    'PLACEHOLDER' = ('$$ABCD_TWO$$',
                     '0'),
                     'PLACEHOLDER' = ('$$EFGH$$',
                    '12345'),
                    'PLACEHOLDER' = ('$$FLAG$$',
                      '1'))')

现在我知道我的单引号弄乱了它,所以我尝试了以下内容。

  1. 用双引号替换所有单引号-这不起作用
  2. 将所有单引号封装在双引号中
  3. 完全删除所有单引号。

问题答案:

在这里,您将陷入嵌套语法和多级语句处理的陷阱:

table <- sqlQuery >(< myconn, 'SELECT *
                  FROM "_SYS_BIC"."mytable.TABLE/ALL_DATA"'>)< ---!   
                ('PLACEHOLDER' = ('$$AS_OF_DATE$$',
                 '2017-01-09'),
                'PLACEHOLDER' = ('$$ABCD_ONE$$',
                 '0'),
                'PLACEHOLDER' = ('$$ABCD_TWO$$',
                 '0'),
                 'PLACEHOLDER' = ('$$EFGH$$',
                '12345'),
                'PLACEHOLDER' = ('$$FLAG$$',
                  '1'))')

对于R,您的命令在我放置的位置结束,< ---!其余所有内容对R都是无效的。
在这种情况下,请记住sqlQuery()函数期望第二个参数中包含 整个 SQL命令字符串,这一点很重要。这包括HANA的WITH
PARAMETER语法。

为了避免此类问题,可以先将SQL命令分配给变量,然后仅在函数调用中使用该变量。
为了使用R变量设置参数,可以使用文本替换。

# create the date parameter in the right format YYYY-MM-DD
selDate <- format(Sys.Date() , "%F")

selDate [1]“ 2017-02-04”

# create the base SQL command with %D as a placeholder for the selDate
# note how all single quotes inside the sqlCMD need to be escaped by a \
 sqlCMD <- 'SELECT *
 +                   FROM "_SYS_BIC"."mytable.TABLE/ALL_DATA"   
 + (\'PLACEHOLDER\' = (\'$$AS_OF_DATE$$\', \'%D\'),
 + \'PLACEHOLDER\' = (\'$$ABCD_ONE$$\', \'0\'),
 + \'PLACEHOLDER\' = (\'$$ABCD_TWO$$\', \'0\'),
 + \'PLACEHOLDER\' = (\'$$EFGH$$\', \'12345\'),
 + \'PLACEHOLDER\' = (\'$$FLAG$$\', \'1\'))'

sqlCMD [1]“ SELECT * \ n + FROM \” _ SYS_BIC \“。\” mytable.TABLE / ALL_DATA
\“ \ n +(’PLACEHOLDER’=(’$$ AS_OF_DATE $$’,’%D’),\ n +’ PLACEHOLDER’=(’‘$$
ABCD_ONE $$’,‘0’),\ n +’PLACEHOLDER’=(’$$ ABCD_TWO $$,‘0’),\ n
+’PLACEHOLDER’=(’$$ EFGH $$ ‘,‘12345’),\ n +’PLACEHOLDER’=(’$$ FLAG
$$’,‘1’))“

# now subsitute the %D with the selDate
sqlCMD <- gsub ("%D", selDate, sqlCMD)

sqlCMD [1]“ SELECT * \ n FROM \” _ SYS_BIC \“。\” mytable.TABLE / ALL_DATA \“
\ n(’PLACEHOLDER’=(’$$ AS_OF_DATE $$’,‘2017-02-04’), \ n’PLACEHOLDER’=(’$$
ABCD_ONE $$’,‘0’),\ n’PLACEHOLDER’=(’$$ ABCD_TWO $$’,‘0’),\
n’PLACEHOLDER’=(’$$ EFGH $$’,‘12345’),\ n’PLACEHOLDER’=(’$$ FLAG $$’,‘1’))“

  # finally run the query
  table <- sqlQuery(myconn, sqlCMD)

当然,所有常规建议都适用(例如 不要 使用SELECT *或在获取结果数据集之前确保正确的过滤和聚合)。



 类似资料:
  • 本文向大家介绍Markdown 报价单,包括了Markdown 报价单的使用技巧和注意事项,需要的朋友参考一下 示例 通过添加>一行,您可以创建带引号的文本! 我是个报价!

  • 我能够检查我输入的单词是否是回文。但是我怎么让它检查整个句子。比如:一个人,一个计划,一只猫,一只火腿,一头牦牛,一个山药,一顶帽子,一条运河——巴拿马! 这是我的回文: 输出: 输入一个句子:一个男人,一个计划,一只猫,一个火腿,一头牦牛,一个山药,一顶帽子,一条运河! 这句话不是回文 //这不也是回文吗?这就是我想说的。我想输入一整句话。 然而,如果我只做一个词: 输入一个句子:abccba

  • 最后,我没有看到这里的等价或延伸。Monad是一种不同的风格,在另一个故事中很有用。 抱歉我的无知。

  • 问题内容: 如果列匹配,是否有很好的方法在SQL中表示选择特定的行,否则选择更通用的行?就像是: 我只希望它返回一个特定的记录(如果存在),否则,如果找不到特定的列匹配项,则返回通用的“ ALL”记录。看起来COALESCE与我正在寻找的相似,但我不知道在语法上如何工作。 问题答案: @Blorgbeard答案(使用前1个和排序依据)可能是最好的方法,但只是有所不同,您还可以使用子查询,但不存在:

  • 我实际上是一个新手到Java,并试图做一个小项目。所以,在我的项目中,我想让用户输入一个句子,我想让程序在句子中搜索特定的单词,并基于此给出输出。我使用NetBeans开发我的应用程序。 我的代码是这样的 我知道这段代码没有意义,也不会运行,但我这样说是为了让人们对我试图实现的目标有一个大致的了解。 请帮帮我.

  • 我需要使用Jackson解析器来处理包含非标准单引号而不是双引号的json。以前有人问过这个问题: 配置Jackson以反序列化单引号(无效)JSON 但是“JsonParser”类在杰克逊 2.0 中不再存在。看起来配置对象映射器的较新方法是这样的: 但我找不到ALLOW_SINGLE_QUOTES功能。也许我只是没看到。 如何在Jackson 2.x中反序列化单引号? 编辑 OOPS,没关系。