mysql - 为什么当我构建 Mysql 查询时我的变量不能正确插入?

标签 mysql perl

我正在尝试通过 Perl 程序在 mysql 中编写正则表达式。我想要这样的查询:

WHERE a.keywords REGEXP '[[:<:]]something[[:>:]]'

但是,在 Perl 中,当我进行此查询时,我在连接时遇到错误:

for($i=0;$i<$count;$i++){
    $where = $where . "'[[:<:]]$andkeywords[$i][[:>:]]' ";  #errors

因为这不会给我一个错误:

for($i=0;$i<$count;$i++){
    $where = $where . "'[[:<:]] $andkeywords[$i] [[:>:]]' ";  #no error

注意“无错误”代码中有多余的空格。但是如果我有额外的空格,那么我就得不到我想要的结果,因为在数据库中没有“额外的空格”。

最佳答案

为了完整起见,这也适用:

for ($i = 0; $i < $count; $i++) {
    $where .= "'[[:<:]]${andkeywords[$i]}[[:>:]]' ";
}

${blah} 在字符串外无效,但在可插入字符串内,它等同于 $blah

我本以为这种模式比其他答案更常见,但是……毕竟,您还想输入什么 "foo${var}bar"?显然 "foo$var\bar" 不起作用,因为 \b 是公认的转义序列。

关于mysql - 为什么当我构建 Mysql 查询时我的变量不能正确插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/616794/

相关文章:

mysql - SQL 过程 : Updating a specific row to current system year

perl - 如何在不破坏语法检查的情况下将项目特定的 @INC 模块路径添加到 Komodo?

从A点到B点的mysql正则表达式

sql - 如何创建更好的表结构

php - 从 Laravel 数据库中检索所有父/子记录(分层数据)

regex - perl根据最近的某个html标签内容进行条件替换

linux - 使用 linux 查找和替换制表符分隔文件中列中的值

linux - 根据第一列的开头合并 txt 中的几行

java - Informix CSDK 安装失败

mysql - 通过 Doctrine 选择查询后,错误 : Invalid PathExpression. 必须是 StateFieldPathExpression