0 0

[求教]SQL语句的正则表达式应用10

在JAVA中,碰到如下问题:
一条SQL语句的Where部分怎样给字段加上"表名."的前缀?
例如: select * from table1 where fld1 = '1' and instr(fld2,'abc') = 1
其中Where部分为" fld1 = '1' and instr(fld2,'abc') = 1"
也有可能空格部分有差异" fld1 = '1' and instr( fld2,'abc') = 1"

那么能否通过正则表达式获取fld1和fld2前面的空字符串,这样我就可以利用replace方法就可以把"表名."的前缀加入了.

总之就是仅仅把字段前面的\b取出来,然后通过replaceAll方法插入表名.

希望各位大大给予解答.

问题补充:
liuqing_2010_07 写道
你这个是动态添加不同的表名吧。
String sql ="select * from tableName where tableName.fld1 = '1' and instr(tableName.fld2,'abc') = 1 ";

sql = sql.replace("tableName","realtableName");



先评一个tableName进去然后再用真正的表名去替换。


关键是where语句后面的部分是别人写的,我是想用户体验好一点,不用他写.

问题补充:
wangqj 写道
这个是所有的字段都替换,你只是用这个sql做例子,还是只替换这个sql

只是用这个sql做例子.实际情况下,where条件是多种多样的.但仅仅就是针一张表而已,所以应该也不会太复杂.

问题补充:
高级java工程师 写道
占位符一下

占位符是治标不治本

问题补充:
LeeYee 写道
基本断定使用正则表达式达到你的要求无解,原因很简单,找不出来规律。

如果你的 where 后面都是  col1 = val and col2 = val2 这种类型的话那么还是有希望办的,但你的要求是 where 后可能存在函数,并且也不一定是 = 有可能其他什么的,所以有一定的逻辑在里面,这个在正则表达式中是无法做到的。

建议你做点其他尝试,最好让写where部分的人有个规范,这样你拿到时也好做处理。如果存粹使用正则应该是达不到的。


这么多回答,就你理解我的问题了.呵呵.我想尝试一下SQL解析的开源项目,看看能不能给处理了.你觉得呢?
2012年3月14日 17:19

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

0 0

哥给你的建议没有一点用吗?。。。

2012年3月26日 09:36
0 0

引用
我想尝试一下SQL解析的开源项目

要是实现什么功能?

2012年3月25日 20:52
0 0

基本断定使用正则表达式达到你的要求无解,原因很简单,找不出来规律。

如果你的 where 后面都是  col1 = val and col2 = val2 这种类型的话那么还是有希望办的,但你的要求是 where 后可能存在函数,并且也不一定是 = 有可能其他什么的,所以有一定的逻辑在里面,这个在正则表达式中是无法做到的。

建议你做点其他尝试,最好让写where部分的人有个规范,这样你拿到时也好做处理。如果存粹使用正则应该是达不到的。

2012年3月15日 19:57
0 0

这样的sql不好分析,因为还要考虑sql函数,你说仅仅是针对一张表的话,办法也不是没有不过要笨一点,但是能够符合你的要求。

		String s = "select * from table1 where fld1 = '1' and instr(fld2,'abc') = 1 ";
		String regex = "(?=(fld1)|(fld2)|(fld3))";

		System.out.println(s.replaceAll(regex, "table1."));


用字段名来替换,呵呵。

2012年3月14日 20:38
0 0

你这个不好解决,需要对SQL做语义分析。不替换有什么问题?

2012年3月14日 19:31
0 0

//数据库表中字段:
String []fields = new Strng []{"fld1","fld2"};
String where ;//这个是别人写的已经初始化了。
for (int i = 1; i <= fields.length; i++) {	
where  = where.replace(fields[i],"realtableName."+fields[i]);  
}

2012年3月14日 19:13
0 0

这个是所有的字段都替换,你只是用这个sql做例子,还是只替换这个sql

2012年3月14日 17:46
0 0

你这个是动态添加不同的表名吧。

String sql ="select * from tableName where tableName.fld1 = '1' and instr(tableName.fld2,'abc') = 1 ";

sql = sql.replace("tableName","realtableName");



先评一个tableName进去然后再用真正的表名去替换。

2012年3月14日 17:41
0 0

占位符一下

2012年3月14日 17:30

相关推荐

    JSP SQL 图书馆系统

    【JSP SQL 图书馆系统】是一个基于JSP(JavaServer Pages)技术开发的图书管理应用,它结合了SQL(Structured Query Language)用于数据库操作,实现了图书馆的基本功能。这个项目对于初学者来说是一个很好的学习...

    sql练习题.pdf

    由于MySQL是最流行的开源关系型数据库管理系统之一,因此本练习题可能着重于考察学生对于SQL语言在MySQL环境下的应用能力。 在文档内容中,还提供了数据表的创建语句和插入数据的示例。数据表包括学生表(Student)...

    我求教高手的VB毕业设计

    【标题】:“我求教高手的VB毕业设计” 在VB(Visual Basic)中进行数据库操作是常见的编程任务,尤其是在毕业设计项目中。VB提供了一种简单的方式来与数据库交互,特别是像Access这样的桌面数据库管理系统。当你在...

    求教C++等等一系列的问题

    #### 标题解析:“求教C++等等一系列的问题” 这一标题表明了提问者对于C++及可能的其他编程技术存在疑问。C++是一种广泛应用于系统软件开发、游戏开发等多个领域的高级编程语言。对于初学者来说,掌握C++不仅能够...

    毕业设计javajsp大学生兼职家教网sqlserver-qkrp源码含文档工具包

    毕业设计javajsp大学生兼职家教网sqlserver-qkrp源码含文档工具包 页面是jsp,数据库sqlserver,jdk1.8...发布求教信息 系统管理员 包含:源码、数据库脚本、论文、环境工具包、相同框架项目的安装教程(在说明文档中)

    公式求教共4页.pdf.zip

    很抱歉,根据您提供的信息,"公式求教共4页.pdf.zip"似乎是一个包含四页公式教学内容的PDF文档的压缩文件,而"赚钱项目"可能是压缩包中的另一个文件或者是一个误输入。然而,没有实际的文件内容,我无法提供具体的IT...

    vb-mschart查询Access数据

    标题“vb-mschart查询Access数据”涉及到的是使用Visual Basic (VB)编程语言,结合...在实际操作中,需要注意连接字符串的正确配置、SQL查询语句的编写、以及MSChart控件的属性设置,以确保数据能够正确、有效地显示。

    extjs文件浏览框问题求教

    标题中的“extjs文件浏览框问题求教”表明这是一个关于ExtJS框架中文件选择或浏览功能的编程问题。ExtJS是一个流行的JavaScript库,用于构建富客户端应用程序,它提供了丰富的组件库,包括文件浏览框(FileBrowser)...

    在Oracle PL/SQL中游标声明中表名动态变化的方法

    /* 小弟刚刚接触ORACLE存储过程,有一个问题向各位同行求教,小弟写了一个存储过程,其目的是接收一个参数作为表名,然后查询该表中的全部记录的某一个字段的内容导入到另一个表中。 ( tabname in varchar ) is v_...

    PHP推广链接的修改,求教

    PHP推广链接的修改,求教 这两个文件可以随时互换的,只是推广链接的形式不同;

    应用型本科计算机网络专业建设研究

    结合绥化学院由师范型院校向应用型本科院校转型的网络专业改革实践,遵循网络专业建设人才培养目标,联系企业对网络人才需求 的实际,认真分析目前网络专业建设中的人才培养模式、实验室建设、师资队伍建设、教学...

    最新关于计算机应用技术专业毕业实习报告心得.pdf

    实习期间,学生应遵守单位规章制度,按时上下班,虚心求教,认真完成任务,保持良好的团队协作。同时,每日反思工作,记录实习经历,有助于个人成长。 实习所在的浙江XXXX系统工程有限公司是一家高科技企业,专注于...

    中小学教师信息技术应用能力提升个人研修计划3篇.docx

    8. **个性化研修策略**:针对个人的不足,制定具体的学习计划,充分利用研修平台,主动求教,确保学习效果。 综上所述,教师们将通过这些研修计划,致力于在信息技术环境下提升教学效果,推动教育现代化进程,同时...

    求教类似SUMIF;COUNTIF的条件函数的写法???

    求教类似SUMIF;COUNTIF的条件函数的写法???

    求教现在的主流3D网络游戏开发都使用哪些技术.doc

    求教现在的主流3D网络游戏开发都使用哪些技术.doc

    求教模糊Ts辨识里对于系统结构辨识的确定和归一化数据-一些文献.rar

    求教模糊Ts辨识里对于系统结构辨识的确定和归一化数据-一些文献.rar 是不是只有试验法呢,根据局部动态特性,估计大致的系统阶数,然后确定,输入输出的阶数??还是用什么工具箱,我看到有些文献说,用穷尽式搜索...

    (完整版)教师信息技术应用能力提升工程研修计划.docx

    - 积极参与学习,向专家和同行求教,解决疑惑。 - 通过多种途径提升信息技术知识,如阅读相关文献,参加研讨会,利用网络资源。 - 在多媒体环境中优化教学,利用网络教学平台开展自主、合作、探究式学习。 - ...

Global site tag (gtag.js) - Google Analytics