import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args){
Map<String,Object> param = new HashMap<String,Object>();
/*List<String> list = new ArrayList<String>();
list.add("10000");
list.add("20000");
list.add("30000");*/
param.put("hrids", new String[]{"1000","2000","3000","4000"});
param.put("scids", new String[]{"100000","200000","3000","4000"});
param.put("beginDate", "'2010-03-20'");
param.put("endDate", "'2010-03-30'");
String sql="select from atd_holiday where scids in($scids$) and hrids in ($hrids$) and valid_date between #beginDate# and #endDate#";
Pattern pattern1 = Pattern.compile("\\$[a-zA-Z]+\\$");
Matcher matcher1 = pattern1.matcher(sql);
while(matcher1.find()){
String paramStr = matcher1.group();
String paramName=paramStr.replaceAll("\\$", "");
System.out.println(paramName);
Object value=param.get(paramName);
if(value instanceof String){
sql=sql.replace(paramStr,"'"+value.toString()+"'" );
}else if(value instanceof Collection){
Collection collection=(Collection)value;
StringBuffer sb = new StringBuffer();
int i=0;
for(Iterator it=collection.iterator();it.hasNext();i++){
Object obj=it.next();
sb.append("'"+obj.toString()+"'");
if(i<collection.size()-1){
sb.append(",");
}
}
sql=sql.replace(paramStr,sb.toString());
}else if(value instanceof Object[]){
Object[] objArray=(Object[])value;
StringBuffer sb = new StringBuffer();
for(int i=0;i<objArray.length;i++){
sb.append("'"+objArray[i].toString()+"'");
if(i<objArray.length-1){
sb.append(",");
}
}
sql=sql.replace(paramStr,sb.toString());
}
}
Pattern pattern2 = Pattern.compile("#[a-zA-Z]+#");
Matcher matcher2=pattern2.matcher(sql);
while(matcher2.find()){
String paraStr=matcher2.group();
String paramName=paraStr.replace("#", "");
System.out.println(paramName);
Object value=param.get(paramName);
sql=sql.replace(paraStr, value.toString());
}
System.out.println(sql);
}
}
分享到:
相关推荐
标题“用正则表达式提取SQL”涉及到的是在编程中如何使用正则表达式来从文本或代码中抓取SQL语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...
在这个主题中,我们将深入探讨SQL语法分析、正则表达式的应用以及如何在C#中使用正则表达式来解析文件。 首先,SQL语法分析是理解和执行SQL查询的关键步骤。当一个SQL语句被提交到数据库管理系统时,系统会对其进行...
使用正则表达式可以编写简洁、强大的 SQL 语句,提高数据处理的效率和灵活性。熟练使用正则表达式可以帮助用户快速搜索、替换和验证数据,并提供高度的灵活性。 在 Oracle 数据库中,正则表达式的应用非常广泛,...
SQL参数格式 例如:select * from tb where nd=:nd and yd=:yd 想一次性把所有SQL语句中参数(带冒号)全部换成数据, 开始 选定用正则表达式。 原先写这样 代码如下: strsql.replace(/(:\w+)/g,(“$1”).substring(1)...
本文将深入探讨SQL修改表语句以及正则表达式在数据处理中的应用。 **SQL修改表语句** SQL修改表语句允许我们动态地更新数据库中的表结构,以便适应业务需求的变化。以下是一些常见的SQL命令: 1. **添加列 (ALTER...
在"Java源代码案例 - 使用正则表达式解析sql语法树.zip"这个压缩包中,我们可以推测包含了一个使用Java实现的SQL语句解析器,可能通过正则表达式解析SQL语句的语法结构。 在SQL(Structured Query Language)中,...
2. **错误排查**:正则表达式中的错误排查通常比标准SQL语句更加困难。开发者需要熟悉正则表达式的语法和特性,以便能够准确地定位和解决问题。 3. **性能考虑**:尽管正则表达式提供了强大的查询能力,但在某些...
写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+)\]?[\r\n\s]* 支持各种表达式 SELECT * FROM Config SELECT * FROM
在SQL解析场景中,通过精心设计的正则表达式能够高效地识别并提取出SQL语句的关键部分,如关键字、表名、列名等。 #### SQL解析需求 假设我们需要解析一系列SQL语句,并将其转换为一种更易读的格式,或者从中提取...
在这条语句中,REPLACE函数用于替换文本,它接受三个参数:字段名、被替换的文本和替换后的文本。WHERE子句中的REGEXP指定了匹配规则,只有当url字段中的内容符合这个正则表达式时,REPLACE函数才会执行替换操作。 ...
replace函数可以通过简单的字符串替换来更新数据,而regexp则可以使用复杂的正则表达式模式进行更灵活的数据匹配和替换。 首先,replace函数是MySQL中的字符串函数,用于在字符串中查找指定的子字符串并替换为另一...
这定义了一个正则表达式,用于匹配 SQL 语句的 select 部分。 使用 `regex_match` 函数来匹配输入字符串: ```cpp if (regex_match(in.c_str(), what, expression)) { // 匹配成功 } else { // 匹配失败 } ``` 在...
- **集成到SQL语句中**:可以直接在SQL查询中使用正则表达式进行条件过滤,无需编写额外的程序代码。 ##### 3.2 实现方法 - **REGEXP_LIKE**:用于判断一个字符串是否符合指定的正则表达式模式。 - **REGEXP_INSTR*...
特别是当SQL语句中存在多余的空格、回车和换行符时,不仅会影响SQL的可读性,还可能导致代码执行出现错误。在Java中,可以利用正则表达式来解决这一问题,正则表达式是一种强大的文本处理工具,能够进行复杂的模式...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。在C#中,`System.Text.RegularExpressions`命名空间提供了`Regex`类来支持正则表达式的操作。通过创建`Regex`对象并调用其方法...
正则表达式(Regular Expression)是一种强大的文本处理工具,可以用来匹配、查找、替换等操作,包括匹配SQL中的注释语句。在本文中,我们将探讨如何使用正则表达式有效地匹配T-SQL(Transact-SQL)中的注释。 首先...
在本文中,我们将深入探讨如何使用C#编程语言和正则表达式来实现百度体育新闻的抓取。C#是一种广泛应用于Windows平台的面向对象的编程语言,它提供了丰富的类库支持网络通信和数据处理。正则表达式则是用于文本模式...
通过将正则表达式与SQL语句结合使用,可以在保证查询效率的同时,简化查询语句的复杂度,并便于后续的维护和错误排查。 综上所述,正则表达式在数据处理中的应用不仅限于数据库查询,在其他需要进行字符串匹配的...
本压缩包集合了多种API文档,包括Ajax、jQuery、正则表达式、SQL以及JDK 1.7的相关内容,对于学习和提升IT技能大有裨益。 首先,我们来看`jQuery文档.chm`,jQuery是一个轻量级、高性能的JavaScript库,它简化了...