Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否使用VBA从SQL查询字符串中删除别名?_Mysql_Sql Server_Vba_Excel - Fatal编程技术网

Mysql 是否使用VBA从SQL查询字符串中删除别名?

Mysql 是否使用VBA从SQL查询字符串中删除别名?,mysql,sql-server,vba,excel,Mysql,Sql Server,Vba,Excel,我有一个SQL查询字符串。在这个字符串中有多个不同的数据列,它们都来自同一个表。为了简单起见,这里有一个简短的示例:选择“a.”“B.”“a.”“C.”“a.”“D”。 其中,'A'是别名。我的问题是:有没有一种方法可以使用VBA获取该查询字符串,并删除别名'a'的所有实例,只返回数据列'B','C','D'? 请不要完整的代码,我喜欢起点。我喜欢自己来填补残局。它有助于学习过程。您是从表中直接选择的吗?除非您在查询中执行某些函数,否则直接从表中提取将得到列名。另一个选择是: 选择[A]作为co

我有一个SQL查询字符串。在这个字符串中有多个不同的数据列,它们都来自同一个表。为了简单起见,这里有一个简短的示例:
选择“a.”“B.”“a.”“C.”“a.”“D”。
其中,
'A'
是别名。我的问题是:有没有一种方法可以使用VBA获取该查询字符串,并删除别名
'a'
的所有实例,只返回数据列
'B','C','D'

请不要完整的代码,我喜欢起点。我喜欢自己来填补残局。它有助于学习过程。

您是从表中直接选择的吗?除非您在查询中执行某些函数,否则直接从表中提取将得到列名。另一个选择是:

选择[A]作为columnName,[B]作为ColumnName2,依此类推

  • 恢复查询表下的SQL,如下所示:
  • 恢复SQL:

    Range("A1").Select 'Your query worksheet
    With Selection.QueryTable
        queryText = .CommandText
    End With
    
  • 然后将别名替换为
    LEFT
    RIGHT
    INSTR
    RegExp
    对象(如果您想学习一些有用且快速使用的
    RegExp
    -正则表达式)。如果您需要一个示例正则表达式,请在注释中告诉我。如果你想学习VBA中的正则表达式,我做了一个练习

  • 替换查询并刷新查询表

  • 替换和刷新查询

    Range("A1").Select 'Your query worksheet
    With Selection.QueryTable
        .CommandText = queryText
        .Refresh BackgroundQuery:=False
    End With
    

    删除这些别名的目的是什么?如果有两个表具有相同的列名,您的查询将失败,因为它对于引擎从哪个表中提取哪个列来说太不明确了。别名有助于定义正确的列。您的示例SQL信息错误。单引号不用于表和列别名。另外,把你的问题和你实际使用的数据库联系起来。我想我应该说得更清楚一些。我确实知道别名很重要,在使用查询时需要别名,但我只需要
    'B'、'C'、'D'
    字段用于其他目的。我为这种含糊不清表示歉意。(对这个网站来说还是新的)@GordonLinoff谢谢。我对SQL不太了解。我只是用和字符串相同的格式写了一个简短的例子。我只是用简单的信替换了敏感信息。谢谢。我相信这就是我所需要的。