【发布时间】:2014-04-20 11:48:28
【问题描述】:
我是 R 新手,在 R 工作室工作,我很享受。 我基本上是在尝试分割一条 SQL 语句以用完整的表名替换所有别名。我已经通过下面的代码在这个论坛上得到了大量帮助
以下代码、获取和 SQL 语句并将其拆分为基本组件,因此 选择 从 在哪里
我以 SQL 为例,但该语句可以有任意数量的表和更多的别名。目的是编写一个循环,该循环将用完整的表名替换别名,而与 SQL 和别名数量无关。目前我的 gsub 函数只会替换我查询中的第二个别名。我想知道是否有人能看出我的逻辑错误?
txt <- "SELECT AL1.attr1,AL2.attr2 FROM Table_1 as AL1, Table_2 as AL2 WHERE AL1.attr1 == 1"
###########################################################################################
# First Split the SQL statement into SELECT FROM and WHERE clause (1 Row FOr each)
# Take The From Clause and Split that on Period so AL1.Attrib1 = AL1 Attrib1
# Then split on 'as' so splitting the alias from the actual table name
###########################################################################################
SQLSplit = sapply(strsplit(txt,split="WHERE|FROM|SELECT"),trim)
SQLSegmented = unlist(strsplit(SQLSplit, ".|,", fixed = TRUE))
SplitOnPeriod = sapply(strsplit(SQLSegmented[2],split=","),trim)
SplitOnComma = sapply(strsplit(SplitOnPeriod,split="as"),trim)
for (i in 1:ncol(SplitOnComma))
{
cat(SplitOnComma[1,i])
cat(SplitOnComma[2,i])
test = gsub(SplitOnComma[2,i], SplitOnComma[1,i], SQLSegmented[1])
}
【问题讨论】:
-
那么,你想把所有
Table_1 as AL1和AL1.x替换为Table_1.x` 的地方(但以通用方式)?