我有一个SQL查询字符串。在这个字符串中有多个不同的数据列,它们都来自同一个表。为了简化起见,这里有一个简短的例子:SELECT 'A'.'B', 'A'.'C', 'A'.'D'
其中'A'
是别名。我的问题是:有没有一种方法可以使用VBA获取查询字符串,并删除别名'A'
的所有实例,只返回数据列'B', 'C', 'D'
?请不要完整的代码,我喜欢起点。我喜欢自己填。它有助于学习过程。
- 恢复QueryTable下的SQL,如下所示:
恢复SQL:
Range("A1").Select 'Your query worksheet
With Selection.QueryTable
queryText = .CommandText
End With
然后将别名替换为
LEFT
、RIGHT
、INSTR
或RegExp
对象(如果您想学习一些有用且快速使用的RegExp
正则表达式)。如果您需要一个正则表达式示例,请在评论中告诉我。如果你想在VBA中学习Regex,我在这里做了一个教程。替换查询并刷新QueryTable
替换和刷新查询
Range("A1").Select 'Your query worksheet
With Selection.QueryTable
.CommandText = queryText
.Refresh BackgroundQuery:=False
End With
是否直接从表中选择?除非您在查询中执行某个函数,否则直接从表中获取列名。另一种选择是:
选择[A]AS columnName、[B]AS ColumnName2等