从 SQL 查询中获取参数名称

2024-01-01

后端是PostgreSQL服务器9.1。

我正在尝试构建 AdHoc XML 报告。报告文件将包含 SQL 查询,所有查询都必须以 SELECT 语句开头。 SQL 查询将带有参数。根据关联列的数据类型,这些参数将相应地呈现给用户以提供值。

一个粗略的 SQL 查询:

SELECT * FROM customers
WHERE 
(
    customers.customer_code=@customer_code AND customers.location=@location
    AND customers.type=
    (
        SELECT type from types
        WHERE types.code=@type_code
        AND types.is_active = @type_is_active
    )
    AND customers.account_open_date BETWEEN @start_date AND @end_date
)
OR customers.flagged = @flagged;

我想从查询字符串中获取列名和参数的列表,并将它们放入字符串数组中并稍后进行处理。

我只能使用以下正则表达式匹配参数:

@(?)(?<parameter>\w+)

预计比赛:

customers.customer_code=@customer_code
customers.location=@location
types.code=@type_code
types.is_active = @type_is_active
customers.account_open_date BETWEEN @start_date AND @end_date
customers.flagged = @flagged

如何立即匹配“@Parameter”、“=”和“BETWEEN”?


我知道有点晚了,但为了未来的研究:

我认为这个正则表达式符合您的目的:

(\w+\.\w+(?:\s?\=\s?\@\w+|\sBETWEEN\s\@\w+\sAND\s\@\w+))

Check 这个 Regex101 小提琴 http://regex101.com/r/fW9zR0在这里,仔细阅读每个部分的解释。

基本上,它首先寻找您的customer.xxx_yyy列,然后对于= @variable or BETWEEN @variable1 AND @variable2.

捕获的组:

MATCH 1
1.  [37-75] 
`customers.customer_code=@customer_code`

MATCH 2
1.  [80-108]    
`customers.location=@location`

MATCH 3
1.  [184-205]   
`types.code=@type_code`

MATCH 4
1.  [218-251]   
`types.is_active = @type_is_active`

MATCH 5
1.  [266-327]   
`customers.account_open_date BETWEEN @start_date AND @end_date`

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

从 SQL 查询中获取参数名称 的相关文章

随机推荐

  • Eclipse/PyCharm 中的 jython 设置

    Mac上使用Python 2 7 IDE是PyCharm 需要在Python脚本中使用一些Java函数 并且更喜欢使用Python的导入 例如from com a b c import fooFunc 这样我就可以使用fooFunc在 Py
  • ArrayFormula 与 GoogleFinance 动态日期

    首先 我不是一个强大的表格用户 我正在尝试使用 GOOGLEFINANCE 计算多种货币的金额 我用这个公式 IF A2 IF C2 C C2 C IF D2 D D2 D INDEX GoogleFinance CURRENCY USDU
  • jQuery - 动态添加验证规则到多个文本框

    我正在尝试动态地将验证规则添加到多个文本框 这是js validate form SubmitForm validate input id Hours rules add number true messages number Please
  • 具有非线性趋势的去趋势通量时间序列

    我需要对通量时间序列数据 光曲线 进行去趋势处理 但是当时间序列数据没有简单的线性趋势时 我遇到了问题 我一直在使用 scipy signal detrend 来消除线性情况的趋势 但这在这里还不够 我已经使用 numpy polyfit
  • 如何使用 Visual Studio 调试进程?

    如果应用程序 崩溃 我点击 调试 Visual Studio 是我当前注册的即时 JIT 调试器 Visual Studio 出现 但无法调试任何内容 我没有看到任何拆解 我没有看到任何寄存器 假设它在带有寄存器的 CPU 上运行 调用堆栈
  • 从 Type* 到 void* 是哪种类型的转换?

    在 C 中 对于任何数据类型 我可以执行以下操作 Type typedPointer obtain void voidPointer typedPointer 当我分配时执行哪个强制转换Type to void 这是否与 Type type
  • 在 Linux 内核中使用“sched_setaffinity()”

    网上有很多帖子sched setaffinity 但几乎没有人在内核空间中使用它 我使用的是内核 4 14 79 我尝试使用用户空间调用方法sched setaffinity形式为 cpu set t my set CPU ZERO my
  • Perl:从里到外展开列表不起作用?

    all this is some deeply nested text for you while all s f 1 seg sub f return split 0 print all 我希望 all 是一个 listref 其列表包含
  • 为什么我在尝试启动 Rails 控制台时收到 Readline 错误?

    更新 我在尝试其他地方找到的解决方案时可能弄乱了我的系统 我从头开始 顺利安装了 Ruby 1 9 3 现在尝试让 ree 1 8 7 一起玩得很好 我正在尝试在 Kubuntu 上使用 RVM 安装 Ruby 1 9 3 我相信是 11
  • 如何删除默认的 CRA React 图标?

    我已经删除了 head 标签中的链接 但图标仍然被渲染 是否可以删除或更改 您的图标位于 project root gt public gt favicon ico 中 public favicon ico 删除它很困难 因为如果浏览器找不
  • 在 GKE 上使用 nginx 入口控制器时负载均衡器的节点不健康

    我已经设置了 nginx 入口控制器如下本指南 https github com kubernetes ingress nginx blob master deploy README md 入口运行良好 我能够访问defaultbacken
  • 找不到 png.h 文件 - Linux

    我正在尝试跑步this http cvlab epfl ch cms site cvlab2 lang en software pom index php在 linux ubuntu 中 当我输入 make 时 它 会说 rgb image
  • 尝试使用 jQuery 隐藏 html 表的列

    function func id document ready function toggle click function td nth child id gt div toggle return false 我试图隐藏与单击的按钮对应的
  • 使用 select、group by 和 count 时如何获得非空结果集?

    这是当前的查询 SELECT status ct reconcile status IFNULL COUNT status ct reconcile status 0 AS sch change status num FROM db cre
  • 我可以使用WebRTC接收标准RTP视频流吗?

    我有两台计算机在同一网络上 其中一个使用 RTP 协议传输电影 H264 是否可以创建一个简单的 JavaScript 应用程序来在第二台计算机上接收此流并显示在视频标签中 到目前为止 我对WebRTC的印象是它被设计为在浏览器之间使用 都
  • 一直运行的 iOS GPS 跟踪应用程序

    我正在尝试制作一个应用程序来始终跟踪用户的 GPS 该应用程序是一种汽车 GPS 跟踪器 用于始终获取驾驶员的位置并将其发送到服务器 我尝试将 位置更新 添加到 后台模式 但进入后台时应用程序将在 10 分钟后自动暂停 有没有办法让这个应用
  • 在另一个单元格中输入数据并按 Enter 选项后转到特定单元格

    我有一个 Excel 工作表 我正在 A2 B2 和 C2 中输入数据 按 Enter 键后 我希望光标选择下一行 以便我可以输入 A3 B3 和 C3 等信息 我找到了这个信息 Private Sub Worksheet Change B
  • 确定点是否在 3D 三角形内部

    我正在寻求对我对确定点是否位于 3D 三角形内部的方法的看法的认可 给定一条 R t e td 形式的射线和一组三个点 T V0 V1 V2 它们在三维空间中形成一个三角形 我知道如何找到该平面的参数方程三点形成以及如何确定射线是否与该平面
  • Android - InstrumentationTestRunner

    我是 Android 新手 并且来自 NET 背景 对 Java 有点生疏 我正在为 Android 上运行的移动应用程序开发一些测试自动化 目前 我只是使用 Android 调试桥通过命令行启动测试 但当我尝试运行任何测试时遇到错误 首先
  • 从 SQL 查询中获取参数名称

    后端是PostgreSQL服务器9 1 我正在尝试构建 AdHoc XML 报告 报告文件将包含 SQL 查询 所有查询都必须以 SELECT 语句开头 SQL 查询将带有参数 根据关联列的数据类型 这些参数将相应地呈现给用户以提供值 一个