-
正则表达式替换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"
请问我该怎么写正则表达式的匹配语句和 对应的方法。
2008年6月15日 15:12
4个答案 按时间排序 按投票排序
-
采纳的答案
搞错了。忘了加上非捕获组。刚才代码未验证。呵呵,偷懒了。
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
-
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语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...
通过使用正则表达式,可以简化上述例子中的SQL查询语句。例如,同样的查询可以使用如下语句完成: ```sql SELECT * FROM Tablel WHERE name REGEXP '^[ABCD].*P$'; ``` 这里,`REGEXP`是正则表达式的SQL谓词,`'^...
本文将深入探讨SQL修改表语句以及正则表达式在数据处理中的应用。 **SQL修改表语句** SQL修改表语句允许我们动态地更新数据库中的表结构,以便适应业务需求的变化。以下是一些常见的SQL命令: 1. **添加列 (ALTER...
写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+)\]?[\r\n\s]* 支持各种表达式 SELECT * FROM Config SELECT * FROM
2. **错误排查**:正则表达式中的错误排查通常比标准SQL语句更加困难。开发者需要熟悉正则表达式的语法和特性,以便能够准确地定位和解决问题。 3. **性能考虑**:尽管正则表达式提供了强大的查询能力,但在某些...
在SQL解析场景中,通过精心设计的正则表达式能够高效地识别并提取出SQL语句的关键部分,如关键字、表名、列名等。 #### SQL解析需求 假设我们需要解析一系列SQL语句,并将其转换为一种更易读的格式,或者从中提取...
WHERE子句中的REGEXP指定了匹配规则,只有当url字段中的内容符合这个正则表达式时,REPLACE函数才会执行替换操作。 但是,如果需要替换的条件更加复杂,例如要将url中的“test”替换为“abc”,但只有当它出现在“*...
replace函数可以通过简单的字符串替换来更新数据,而regexp则可以使用复杂的正则表达式模式进行更灵活的数据匹配和替换。 首先,replace函数是MySQL中的字符串函数,用于在字符串中查找指定的子字符串并替换为另一...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。在C#中,`System.Text.RegularExpressions`命名空间提供了`Regex`类来支持正则表达式的操作。通过创建`Regex`对象并调用其方法...
在本文中,我们将深入探讨如何使用C#编程语言和正则表达式来实现百度体育新闻的抓取。C#是一种广泛应用于Windows平台的面向对象的编程语言,它提供了丰富的类库支持网络通信和数据处理。正则表达式则是用于文本模式...
例如,当需要对数据库中的数据进行复杂的查询,如要求某字段数据符合特定的格式或规则时,标准的SQL语句如like可能会导致SQL语句变得冗长且难以理解,同时增加查询的复杂度和出错的可能性。 正则表达式在这方面提供...
在SQL语句中,正则表达式可以与一些特定的谓词配合使用,以此替代原本使用通配符“%”和“_”来实现的模糊匹配。这四个谓词包括REGEXP_INSTR、REGEXP_SUBSTR和REGEXP_REPLACE。它们的用法与SQL中的INSTR、SUBSTR和...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。它在编程、数据分析和数据库管理等领域有着广泛的应用。MySQL是世界上最流行的开源关系型数据库管理系统,其功能强大,支持丰富的SQL...
正则表达式是处理文本数据的强大工具,它可以用来搜索、替换和验证文本。在安全领域,正则表达式可用于检测和防止SQL注入攻击。 首先,攻击者可能会尝试判断数据库中表名的第一个字符。在MySQL5+中,通过访问...
例如,要从`student`表的`name`字段中查找以特定字母"Л"开头的记录,可以使用如下SQL语句: ```sql SELECT * FROM student WHERE name REGEXP '^L'; ``` 这里的`^`是正则表达式的一个元字符,表示匹配字符串的开始...
4. **`REGEXP_REPLACE`**:用于替换字符串中满足正则表达式的部分。其语法如下: ``` REGEXP_REPLACE(string, pattern, replacement[, start_position[, occurrence[, return_position]]]) ``` - 示例: ```sql...
在SQL Server开发中,正则表达式是一种强大的文本处理工具,它可以用于匹配、搜索和替换字符串中的复杂模式。SQL Server本身并不直接支持正则表达式操作,但是可以通过内置的扩展存储过程sp_OACreate来创建和使用COM...
4. 使用场景:探索正则表达式在文本搜索、替换、验证输入等实际应用中的作用。 5. 实际案例:通过实例解析,加深对正则表达式的理解和运用。 6. 编程语言中的正则:了解如何在不同的编程语言(如Python、Java、...
在SQL世界中,正则表达式(Regular Expression)是一种强大的文本处理工具,它允许我们进行复杂的模式匹配和字符串操作。然而,SQL Server的标准版本并不直接支持正则表达式,但可以通过使用CLR(Common Language ...