用于解析 SQL 参数的正则表达式

2023-11-23

如果我有一个查询,例如SELECT * from authors where name = @name_param,是否有正则表达式来解析参数名称(特别是“name_param”)?

Thanks


这很棘手,因为参数也可能出现在带引号的字符串内。

SELECT * FROM authors WHERE name = @name_param 
  AND string = 'don\'t use @name_param';

正则表达式如何知道使用第一个@name_param但不是第二个?

这是一个可以解决的问题,但用单个正则表达式来解决它是不切实际的。我必须在 Zend_Db 中处理这个问题,我所做的就是首先删除所有带引号的字符串和分隔标识符,然后您可以对其余部分使用正则表达式。

您可以看到代码,因为它是开源的。 查看功能_stripQuoted() and _parseParameters().

https://github.com/zendframework/zf1/blob/136735e776f520b081cd374012852cb88cef9a88/library/Zend/Db/Statement.php#L200 https://github.com/zendframework/zf1/blob/136735e776f520b081cd374012852cb88cef9a88/library/Zend/Db/Statement.php#L140

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于解析 SQL 参数的正则表达式 的相关文章

  • 获取从开始日期到结束日期的活跃周数

    我的订阅数据如下所示 数据显示用户何时购买订阅 它有user id subscription id start date and end date 我已经得出wk start and wk end从中 user subscription i
  • IN 运算符对 SQL 查询性能的影响有多大?

    我的 SQL 查询需要 9 个小时才能执行 见下文 Select Field1 Field2 From A Where Field3 IN 45 unique values here 当我将此查询拆分为 3 个完全相同的查询 仅每个 IN
  • 用于匹配某些数字的正则表达式

    以下正则表达式将匹配 9 11 位数字 d 9 11 编写完全匹配 9 的正则表达式的最佳方法是什么or11位数字 不包括10位 使用输入元素的模式属性 因此正则表达式应该匹配输入字段的整个值 我想接受任何包含 9 或 11 位数字的号码
  • 如何获取Postgres当前的可用磁盘空间?

    在开始在数据库中进行某些工作之前 我需要确保至少有 1Gb 的可用磁盘空间 我正在寻找这样的东西 select pg get free disk space 是否可以 我在文档中没有找到任何相关内容 PG 9 3 操作系统 Linux Wi
  • Scala 正则表达式替换为匿名函数

    在 Ruby 中 我可以通过以下方式替换字符串中的字符 a one1two2three a gsub d e e to i 1 gt one2two3three 从第二行开始评估块的结果将替换模式中匹配的内容 我们可以在 Scala 中做类
  • SQL Server - SQL 替换整个数据库中所有表中的所有列

    这是一个很遥远的事情 我猜这个问题没有简单的答案 但是 我继承了一个数据库 其中填充了一些可怕的数据 许多包含描述的行都有回车符 这意味着当我们 BCP 输出数据时 它会带有回车符 我的问题 有没有办法在 MS SQL Server 中对整
  • 我们可以使用sql列出MS Access数据库中的所有表吗?

    我们可以使用 sql 找到 ms access 中的所有表吗 就像我们在 sql server 中所做的那样 select from sys tables 在sqlite中 SELECT FROM sqlite master where t
  • 如何删除MySQL中的所有事件

    如果我想删除某个事件 我需要查询类似的内容 DROP EVENT IF EXISTS eventname 但我找不到一次性删除所有事件的命令 必须一项一项地删除 有没有一次性删除所有事件的SQL DROP EVENT IF EXISTS S
  • PostgreSQL WHERE 计数条件

    我在 PostgreSQL 中有以下查询 SELECT COUNT a log id AS overall count FROM Log as a License as b WHERE a license id 7 AND a licens
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 什么是更好的?子查询或内连接十个表?

    一个旧系统已抵达我们的办公室进行一些更改和修复 但它也存在性能问题 我们并不确切知道这种缓慢的根源是什么 当我们重构旧代码时 我们发现了几个具有以下模式的 sql 查询 出于示例目的 简化了查询 SELECT SELECT X FROM A
  • 匹配没有周围字符列表的单词列表

    我有这个正则表达式 one common word or another 除非这两个单词相邻 否则它匹配得很好 One one s more word word common word or another word more anothe
  • 如何统计订单总价?

    我有这些表 Orders id status user id address id 1 await 1 1 products id name price quantity 1 test1 100 5 2 test2 50 5 order p
  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 使用 C# 和 ADO.NET SET NOCOUNT ON 并读取消息

    SET NOCOUNT ON 会阻止显示受 Transact SQL 语句或存储过程影响的行数的消息作为结果集的一部分返回 a 如何使用 C 和 ADO NET 读取这些消息 我假设读取这些消息的 C 代码是相同的 无论 T SQL 语句是
  • Javascript拆分正则表达式问题

    你好 我正在尝试我认为在 Javascript 中相当简单的正则表达式 但给我带来了很多麻烦 我希望能够通过 javascript 通过 和 分割日期 var date 02 25 2010 var myregexp2 new RegExp
  • SQLAlchemy:检查给定值是否在列表中

    问题 在 PostgreSQL 中 检查某个字段是否在给定列表中是使用IN操作员 SELECT FROM stars WHERE star type IN Nova Planet SQLAlchemy 的等价物是什么INSQL查询 我尝试过
  • 正则表达式:如何找到模式的最大整数值?

    想象一下我有以下字符串 I ll have some 1 some 42 and maybe some 5 as well 基本上 我有兴趣了解遵循模式 integer 的最大整数值 我什至不确定是否可以使用正则表达式 我可以使用什么正则表
  • 当有“拥有”时,为什么你有“哪里”[重复]

    这个问题在这里已经有答案了 我知道这个问题已经被讨论了很多 但我的研究都无法让我相信 where and havingMySQL 中的 子句 据我了解 我们可以使用 where 子句实现所有可以完成的操作having 例如 select f
  • 使用 unnest() 返回行?

    我尝试在完成后返回一组行UPDATE 像这样的东西 UPDATE Notis new noti SET notis noti record type FROM SELECT FROM Notis WHERE user id 2 FOR UP

随机推荐

  • Python:我试图找到列表中两个元素之间的最大差异

    我需要找到列表中任意两个元素之间的最大差异 在列表中 1 2 3 4 5 使用 for 循环时 最大差异为 4 元素 1 和 5 之间 该程序需要输出这两个元素 0和4 的位置及其值 1和5 我只能弄清楚如何找到连续值之间的最大差异 但是如
  • 如何告诉 CMake 在编译我的源代码之前下载外部项目

    我有自己的代码 它依赖于第三方库 例如 yaml cpp 我想在编译我自己的源代码之前下载这些第三方库 但是 我无法使用 CMake 做到这一点 我成功下载了 yaml cpp 如下所示 ExternalProject Add yaml c
  • 接口(接口/抽象类)不是抽象?

    最近 我一直在阅读一些帖子 其中讨论了接口是抽象这一假定的错误观念 其中一篇文章是http blog ploeh dk 2010 12 02 InterfacesAreNotAbstractions aspx 我有一点困惑 如果我没有接口
  • Pandas read_excel 百分比作为字符串

    我的 Excel 工作表有一列用百分比符号存储的百分比 例如 50 我该如何胁迫pandas read excel读取字符串 50 而不是将其转换为浮点数 目前read excel实现将百分比解析为浮点数 0 5 另外如果我添加一个conv
  • 何时使用存根和模拟?

    我一直有这样的困惑 如果我编写一个使用假代码来断言某些操作的代码 那么当它真正使用真实对象而不是假对象启动时 我如何信任我的真实实现 例如 我有这样的代码 Test public void CanCreateContactsWithData
  • Linq - 如何从仅包含另一个列表的项目的列表中选择项目?

    我有这两门课 public class Item public int Id get set public List
  • Tomcat 会话超时 web.xml

    这是我的 web xml 文件 它位于WEB INF lib 它指定会话超时时间为 1 分钟 但用户活动 1 分钟后不会超时 Web xml
  • Laravel 嵌套关系

    我无法让非常嵌套的关系在 laravel 中正常工作 想要的行为如下 我通过 ID 选择一个事件 并且想查看哪些人订阅了该事件 现在的问题是事件和人之间有一些表 这是有效的查询 SELECT persons id persons first
  • 在单个标签中使用多种字体颜色

    有没有办法在 iOS 的单个标签中使用两种甚至三种字体颜色 如果使用文本 你好 你好吗 作为示例 那么 你好 将是蓝色的 而 你好吗 将是绿色的 这可能吗 看起来比创建多个标签更容易 参考这里 首先初始化你NSString and NSMu
  • 使用 Npgsql postgres 和 C# 更新命令

    我创建了一个搜索表单来根据称为许可证 ID 的搜索值来查找记录 我能够提取该值的所有字段 我的问题是我正在尝试更新该记录的任何字段 例如 如果我想更新所有这些字段值都在文本框中的地址字段或邮政编码字段 我在 Lname 处或附近遇到语法错误
  • 如何在 Meteor 1.0 中使用 jQuery

    我正在尝试在meteor js 应用程序中使用像这样的jquery JS if Meteor isClient Meteor startup function button click function p toggle 或者没有meteo
  • 相当于 Python 文件的移动百分比

    对于带有以下语言的语言 为了表示块 vim 拥有全能的 钥匙 python代码的等效运动是什么 或者至少以相同的缩进移动到下一行 上一行 The vim wiki建议绑定 例如 nnoremap
  • 如何将 javafx 8 滚动窗格的内容居中

    我有一个 ScrollPane 其中包含一个 GridPane 其中包含一个 ImageView 其中包含一个 Image 我想要的是图像在 GridPane 中居中 如果没有 ScrollPane 我可以使用 setAlignment P
  • 按多个条件子集

    也许这是基本的东西 但我找不到答案 我有 Id Year V1 1 2009 33 1 2010 67 1 2011 38 2 2009 45 3 2009 65 3 2010 74 4 2009 47 4 2010 51 4 2011 1
  • STAThread 和多线程

    来自 MSDN 关于 STAThread 的文章 指示应用程序的 COM 线程模型是单线程单元 STA 作为参考 那就是整篇文章 单线程公寓 好吧 这超出了我的理解范围 另外 我在某处读到 除非您的应用程序使用 COM 互操作 否则该属性实
  • 如何向 WCF 客户端公开枚举属性

    我想向 WCF 客户端应用程序公开枚举属性 但我只能看到枚举值 这是枚举 public enum TemplateType EnumDescription Property Particulars EnumValue PropertyPar
  • 如何使 SET XACT_ABORT ON 回滚事务?

    基于书籍 在线文档SET XACT ABORT ON 我的印象是 如果 T SQL 语句引发运行时错误 则整个事务将终止并回滚 Remarks 当 SET XACT ABORT 为 ON 时 如果 Transact SQL 语句引发运行时错
  • LINQ 在查询中插入 'ESCAPE N'~'

    当我检查 Linq 发出的 SQL 查询时 我注意到它在执行 LIKE 命令时放置了一个 ESCAPE N 我该如何摆脱这个 看起来查询花费的时间是 SQL 中转义符的两倍 这是 LINQ var SearchPhrase xyz var
  • 如何使用 perl cd 进入目录?

    我正在尝试以下 系统 cd目录文件夹 但它失败了 我也尝试系统 退出 离开终端 但它失败了 Code chdir path to dir or die Perldoc chdir EXPR chdir FILEHANDLE chdir DI
  • 用于解析 SQL 参数的正则表达式

    如果我有一个查询 例如SELECT from authors where name name param 是否有正则表达式来解析参数名称 特别是 name param Thanks 这很棘手 因为参数也可能出现在带引号的字符串内 SELEC