我是R的新手,與R studio一起工作,並且很享受它。 我基本上試圖分割一個SQL語句來替換所有的別名與完整的表名。我已經對這個論壇有以下字符串的多重替換
下面的代碼的代碼大量幫助,需要和SQL語句將其分解成它的基本組件,以便 選擇 FROM WHERE
我使用的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爲AL1'何'AL1.x'是'Table_1'.x'(但在一個通用的方式)更換呢? – hrbrmstr