【问题标题】:How to fetch list of all fields in a table in Salesforce?如何在 Salesforce 中获取表中所有字段的列表?
【发布时间】:2016-03-29 10:02:30
【问题描述】:

有没有办法在 Salesforce 中获取表中所有字段的列表?

下面是我用来从特定表中获取所有列的 SQL 语句:

SELECT * FROM myTableName;

【问题讨论】:

    标签: sql salesforce soql


    【解决方案1】:

    不,没有办法获取所有字段。 只能通过额外的 SOAP API。

    【讨论】:

      【解决方案2】:

      MySQL: 执行查询describe myTableName;

      MS SQL: 执行查询exec sp_columns MyTable

      【讨论】:

        【解决方案3】:

        select t.name,c.name from sys.tables t join sys.columns c on t.object_id=c.object_id

        它将显示数据库中所有表的所有字段

        或 select t.name,c.name from sys.tables t join sys.columns c on t.object_id=c.object_id 其中 t.name like '%TableName%' 将显示特定表的所有字段。

        【讨论】:

          【解决方案4】:

          假设您需要 Account 对象(供参考),试试这个:

          String[] allFields = new String[]{};
          Map<String, Schema.SObjectField> fields = Schema.Account.SObjectType.getDescribe().fields.getMap();
          for (String fieldName:fields.keySet()) {
              DescribeFieldResult fieldDesc = fields.get(fieldName).getDescribe();
              if (fieldDesc.isAccessible()) {
                  allFields.add(fieldDesc.getName());
              }
          }
          Account[] accs = Database.query('select ' + String.join(allFields, ', ') + ' from Account limit 1');
          system.debug(accs);
          

          【讨论】:

          • 我的问题是,我有一个像“myTable”这样的表,我想通过 SOQL 执行并使用以下查询获取所有列和值: select * from myTable;那么salesforce sql是否可以做到这一点?
          • 不,您不能在 SOQL 的字段列表中使用通配符(例如 '*' )。也就是说,您必须明确确定要选择的字段。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-16
          相关资源
          最近更新 更多