0 0

正则表达式替换SQL语句中的字段5

我想用正则表达式匹配一个insert的SQL语句,能够自动地将变量赋给对应的字段,比如
SQL=“insert into table(item1,item2,item3) values(:item1,:item2,:item3)”
map.put(item1,"111")
map.put(item2,"222")
map.put(item3,"333")

我想用正则表达式自动的将SQL语句中的:item1,:item2,:item3替换成map中对应的“111”,"222","333"

请问我该怎么写正则表达式的匹配语句和 对应的方法。

OO 
2008年6月15日 15:12

4个答案 按时间排序 按投票排序

0 0

采纳的答案

搞错了。忘了加上非捕获组。刚才代码未验证。呵呵,偷懒了。

String SQL="insert into table(item1,item2,item3) values(:item1,:item2,:item3)"; 
			Map map = new HashMap();
			map.put("item1","111"); 
			map.put("item2","222"); 
			map.put("item3","333"); 

			Pattern p=Pattern.compile("(?::)(\\w+)(?:\\b)");   
			Matcher m=p.matcher(SQL);   
			StringBuffer result=new StringBuffer();   
			while (m.find()) {   
			    String key=m.group(1);   
			    m.appendReplacement(result,(String)map.get(key));   
			}   
			m.appendTail(result);   
			String resultSql=result.toString();
			System.out.println(resultSql);

2008年6月16日 00:47
0 0

用PreparedStatement多好啊
同样可以满足你的需求
而且无需考虑单引号的转义,sql注入攻击这些问题

2008年6月16日 13:58
0 0

引用

不建议这么做,可能导致未验证BUG。至少


同上,这种做法无法防范SQL注入攻击

2008年6月16日 10:17
0 0

Pattern p=Pattern.compile(":(\\w+)\\b");
Match m=p.matcher(SQL);
StringBuffer result=new StringBuffer();
while (m.find()) {
    String key=m.group(1);
    m.appendReplacement(result,map.get(key));
}
m.appendTail(result);
String resultSql=result.toString();


不建议这么做,可能导致未验证BUG。至少
对于这样的SQL是不适用的:
SQL=“insert into table(item1,item2,item3) values('AAA:item1',:item2,:item3)”.
会把字符串中的值替换掉。

SQL还是用preparedStatement方式注入参数比较好。

2008年6月16日 00:39

相关推荐

    用正则表达式提取SQL

    标题“用正则表达式提取SQL”涉及到的是在编程中如何使用正则表达式来从文本或代码中抓取SQL语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...

    正则表达式在数据库查询中的应用

    通过使用正则表达式,可以简化上述例子中的SQL查询语句。例如,同样的查询可以使用如下语句完成: ```sql SELECT * FROM Tablel WHERE name REGEXP '^[ABCD].*P$'; ``` 这里,`REGEXP`是正则表达式的SQL谓词,`'^...

    SQL修改表语句和正则表达式

    本文将深入探讨SQL修改表语句以及正则表达式在数据处理中的应用。 **SQL修改表语句** SQL修改表语句允许我们动态地更新数据库中的表结构,以便适应业务需求的变化。以下是一些常见的SQL命令: 1. **添加列 (ALTER...

    运用正则表达式匹配所有表名

    写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+)\]?[\r\n\s]* 支持各种表达式 SELECT * FROM Config SELECT * FROM

    正则表达式在oracle中的应用

    2. **错误排查**:正则表达式中的错误排查通常比标准SQL语句更加困难。开发者需要熟悉正则表达式的语法和特性,以便能够准确地定位和解决问题。 3. **性能考虑**:尽管正则表达式提供了强大的查询能力,但在某些...

    利用正则表达式对SQL解释的方法

    在SQL解析场景中,通过精心设计的正则表达式能够高效地识别并提取出SQL语句的关键部分,如关键字、表名、列名等。 #### SQL解析需求 假设我们需要解析一系列SQL语句,并将其转换为一种更易读的格式,或者从中提取...

    mysql update正则替换sql语句

    WHERE子句中的REGEXP指定了匹配规则,只有当url字段中的内容符合这个正则表达式时,REPLACE函数才会执行替换操作。 但是,如果需要替换的条件更加复杂,例如要将url中的“test”替换为“abc”,但只有当它出现在“*...

    MySQL中使用replace、regexp进行正则表达式替换的用法分析

    replace函数可以通过简单的字符串替换来更新数据,而regexp则可以使用复杂的正则表达式模式进行更灵活的数据匹配和替换。 首先,replace函数是MySQL中的字符串函数,用于在字符串中查找指定的子字符串并替换为另一...

    C#正则表达式提取网页数据

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。在C#中,`System.Text.RegularExpressions`命名空间提供了`Regex`类来支持正则表达式的操作。通过创建`Regex`对象并调用其方法...

    用C#正则表达式实现的百度体育新闻的抓取

    在本文中,我们将深入探讨如何使用C#编程语言和正则表达式来实现百度体育新闻的抓取。C#是一种广泛应用于Windows平台的面向对象的编程语言,它提供了丰富的类库支持网络通信和数据处理。正则表达式则是用于文本模式...

    基于正则表达式的数据处理应用.pdf

    例如,当需要对数据库中的数据进行复杂的查询,如要求某字段数据符合特定的格式或规则时,标准的SQL语句如like可能会导致SQL语句变得冗长且难以理解,同时增加查询的复杂度和出错的可能性。 正则表达式在这方面提供...

    基于正则表达式的数据处理应用 (1).pdf

    在SQL语句中,正则表达式可以与一些特定的谓词配合使用,以此替代原本使用通配符“%”和“_”来实现的模糊匹配。这四个谓词包括REGEXP_INSTR、REGEXP_SUBSTR和REGEXP_REPLACE。它们的用法与SQL中的INSTR、SUBSTR和...

    正则表达式+MySQL参考文档

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。它在编程、数据分析和数据库管理等领域有着广泛的应用。MySQL是世界上最流行的开源关系型数据库管理系统,其功能强大,支持丰富的SQL...

    php中常见的sql攻击正则表达式汇总

    正则表达式是处理文本数据的强大工具,它可以用来搜索、替换和验证文本。在安全领域,正则表达式可用于检测和防止SQL注入攻击。 首先,攻击者可能会尝试判断数据库中表名的第一个字符。在MySQL5+中,通过访问...

    正则表达式和运算符PPT学习教案.pptx

    例如,要从`student`表的`name`字段中查找以特定字母"Л"开头的记录,可以使用如下SQL语句: ```sql SELECT * FROM student WHERE name REGEXP '^L'; ``` 这里的`^`是正则表达式的一个元字符,表示匹配字符串的开始...

    Oracle正则表达式函数介绍.pdf

    4. **`REGEXP_REPLACE`**:用于替换字符串中满足正则表达式的部分。其语法如下: ``` REGEXP_REPLACE(string, pattern, replacement[, start_position[, occurrence[, return_position]]]) ``` - 示例: ```sql...

    SQL Server正则表达式 替换函数应用详解

    在SQL Server开发中,正则表达式是一种强大的文本处理工具,它可以用于匹配、搜索和替换字符串中的复杂模式。SQL Server本身并不直接支持正则表达式操作,但是可以通过内置的扩展存储过程sp_OACreate来创建和使用COM...

    MySql比知必会+正则表达式比知必会.zip

    4. 使用场景:探索正则表达式在文本搜索、替换、验证输入等实际应用中的作用。 5. 实际案例:通过实例解析,加深对正则表达式的理解和运用。 6. 编程语言中的正则:了解如何在不同的编程语言(如Python、Java、...

    T-SQL中使用正则表达式函数

    在SQL世界中,正则表达式(Regular Expression)是一种强大的文本处理工具,它允许我们进行复杂的模式匹配和字符串操作。然而,SQL Server的标准版本并不直接支持正则表达式,但可以通过使用CLR(Common Language ...

Global site tag (gtag.js) - Google Analytics