MySQL 在 REGEXP 中插入参数

Posted

技术标签:

【中文标题】MySQL 在 REGEXP 中插入参数【英文标题】:MySQL insert parameter inside REGEXP 【发布时间】:2015-09-29 19:37:07 【问题描述】:

我使用 mysql C 连接器。我准备好的语句如下所示:

"SELECT x FROM y WHERE z REGEXP '^BLA?$'"

问题是什么?当我稍后需要在其中插入参数时,字符被视为 REGEXP 的一部分。我该怎么做?被视为数据的占位符?

【问题讨论】:

只是猜测,但也许REGEXP CONCAT('^BLA', ?, '$')? ? 参数接受什么类型的输入?它是否严格限制范围并经过验证?可能有比将其连接到正则表达式更好的解决方案。 @Uueerdo 不只是猜测 - 这是一个可行的解决方案。 @MichaelBerkowski 不确定;我几乎从不需要在 MySQL 中使用正则表达式,所以这方面对我来说主要是“学术”。 @Uueerdo 你应该把它作为答案发布。 【参考方案1】:

REGEXP CONCAT('^BLA', ?, '$') 这应该可以。但是,如果您需要该参数和一个“?”,例如CONCAT('^BLAH', ?, '?$'),我不确定是否是后者?需要转义,但根据this,不转义应该没问题。

【讨论】:

作为注释,这适用于几乎任何需要嵌入占位符其他字符串的情况。 '?' 是 mysql 的问号,所以你需要从字符串中“提取”?,这就是 concat() 派上用场的地方。

以上是关于MySQL 在 REGEXP 中插入参数的主要内容,如果未能解决你的问题,请参考以下文章

mysql流程控制和存储过程介绍

sql server 中 一个要输入参数和输出参数的存储过程。

yxy-插入formid-并发/压力(入参的变量化)

切面ProceedingJoinPoint 获取当前执行类 执行方法,执行方法中的入参对象,入参对象的参数

切面ProceedingJoinPoint 获取当前执行类 执行方法,执行方法中的入参对象,入参对象的参数

切面ProceedingJoinPoint 获取当前执行类 执行方法,执行方法中的入参对象,入参对象的参数