使用Java编写工具类,要求从sql语句中提取表名和字段名
时间: 2024-03-05 10:53:11 浏览: 105
SQL提取数据库表名及字段名等信息代码示例
可以使用正则表达式来从 SQL 语句中提取表名和字段名。以下是一个简单的 Java 工具类示例,可以从 SQL 语句中提取表名和字段名:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SqlParser {
// 正则表达式,用于匹配 SQL 语句中的表名和字段名
private static final Pattern TABLE_NAME_PATTERN = Pattern.compile("FROM\\s+(\\w+)");
private static final Pattern COLUMN_NAME_PATTERN = Pattern.compile("SELECT\\s+(.*)\\s+FROM");
/**
* 从 SQL 语句中提取表名
*
* @param sql SQL 语句
* @return 表名
*/
public static String getTableName(String sql) {
Matcher matcher = TABLE_NAME_PATTERN.matcher(sql);
if (matcher.find()) {
return matcher.group(1);
}
return null;
}
/**
* 从 SQL 语句中提取字段名列表
*
* @param sql SQL 语句
* @return 字段名列表
*/
public static List<String> getColumnNames(String sql) {
Matcher matcher = COLUMN_NAME_PATTERN.matcher(sql);
List<String> columnNames = new ArrayList<>();
if (matcher.find()) {
String[] columns = matcher.group(1).split(",");
for (String column : columns) {
columnNames.add(column.trim());
}
}
return columnNames;
}
}
```
使用方法:
```java
String sql = "SELECT id, name, age FROM users WHERE id = 1";
String tableName = SqlParser.getTableName(sql); // tableName = "users"
List<String> columnNames = SqlParser.getColumnNames(sql); // columnNames = ["id", "name", "age"]
```
阅读全文