正则表达式在sql中提取用户定义的函数

时间:2011-09-15 11:09:23

标签: java sql

我想要一个regular expression,可以在sql查询中唯一标识用户定义的函数。

例如:

with someExp(parameter)
as
(
select parameter = convert(varchar(8000),'welcome')
union all
select parameter + 'user' from someExp where lengthOfPara(parameter) < 100
)
select parameter from someExp
order by parameter

正则表达式应唯一标识函数convert and lengthOfPara

提前致谢。

3 个答案:

答案 0 :(得分:3)

这是不可能的。 SQL查询不是由常规语言描述的,因此您不能使用正则表达式以这种方式隔离任意构造。

答案 1 :(得分:0)

正则表达式不是上下文感知的,它不知道它正在处理sql查询。就正则表达而言,它只是纯文本。

在本文中,没有任何内容可以唯一地将函数标识为与包含单词和括号对的其他结构分开,例如示例中的someExp(parameter)varchar(8000)

答案 2 :(得分:0)

编辑:抱歉,我误解了这个问题。删除不相关的部分

正如其他人所说,正则表达式不起作用。

您可以使用完整SQL语法的语言解析器(如Bison)来检测它。