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 中插入参数的主要内容,如果未能解决你的问题,请参考以下文章
sql server 中 一个要输入参数和输出参数的存储过程。
切面ProceedingJoinPoint 获取当前执行类 执行方法,执行方法中的入参对象,入参对象的参数