mysql的select * from tablename 排除其中一个字段
时间: 2023-09-09 22:01:36 浏览: 69
在MySQL中,想要在查询结果中排除一个字段,可以使用SELECT语句的列名列表,并在列表中不包含需要排除的字段名。例如,假设我们有一个名为tablename的表,其中包含三个字段:field1、field2和field3。如果我们想要排除field2字段,我们可以使用如下的SQL查询语句:
SELECT field1, field3
FROM tablename
使用上述查询语句,我们只会在结果中获取到field1和field3的值,而field2将不会被包含在结果集中。
这样,我们可以很容易地排除某些不需要的字段,从而得到我们所需的查询结果。
相关问题
mysql一个字段多条件模糊查询
好的,您可以使用如下的 SQL 查询语句来实现一个字段多条件模糊查询:
SELECT * FROM tableName WHERE field1 LIKE '%value1%' AND field2 LIKE '%value2%' AND field3 LIKE '%value3%' ...
其中,tableName 表示查询的表名称,field1、field2、field3 等表示查询的字段名,value1、value2、value3 等则表示查询的关键词。在实际使用中,您需要根据具体的需求进行修改,例如更改表名、字段名和关键词等。希望以上回答对您有所帮助!
java druid 解析SQLSelect,替换其中的所有* 元素,使用getTableColumns方法获取字段arrayList信息
可以使用下面的代码来实现:
```
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.statement.SQLSelect;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor;
import com.alibaba.druid.stat.TableStat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class SQLParser {
public static void main(String[] args) {
String sql = "SELECT * FROM user WHERE id = 1";
System.out.println(parseSelect(sql));
}
public static String parseSelect(String sql) {
MySqlStatementParser parser = new MySqlStatementParser(sql);
SQLStatement stmt = parser.parseStatement();
if (stmt instanceof SQLSelect) {
SQLSelect select = (SQLSelect) stmt;
SQLSelectQueryBlock query = (SQLSelectQueryBlock) select.getQuery();
List<SQLExpr> selectList = query.getSelectList();
for (SQLExpr expr : selectList) {
if ("*".equals(expr.toString())) {
query.setSelectList(getTableColumns(sql, query.getFrom().toString()));
}
}
return SQLUtils.toMySqlString(select);
}
return sql;
}
private static List<SQLExpr> getTableColumns(String sql, String tableName) {
List<SQLExpr> columns = new ArrayList<>();
MySqlStatementParser parser = new MySqlStatementParser(sql);
SQLStatement stmt = parser.parseStatement();
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
Map<TableStat.Name, TableStat> tables = visitor.getTables();
for (TableStat.Name name : tables.keySet()) {
if (name.getName().equalsIgnoreCase(tableName)) {
TableStat tableStat = tables.get(name);
for (String column : tableStat.getColumns().keySet()) {
columns.add(SQLUtils.toSQLExpr(column));
}
}
}
return columns;
}
}
```
这个代码使用了 Druid 解析 SQL 的工具类,对 SQL 语句进行解析,找到其中的 SELECT 语句,然后替换其中的 * 元素为表的所有列信息。具体实现是通过调用 `getTableColumns` 方法获取表中所有列信息,然后构造成 SQLExpr 的 List,最后将这个 List 设置为 SELECT 语句的 selectList。