Python怎样定位并删除Sql语句中不确定的查询条件

1.问题场景描述:

        在sql语句中经常会有查询条件是:查找多个订单签订日期范围的数据,但具体的日期范围是不确定,我们如何来查找定位

例如:查询条件语句的部分如下图:

目标是:

        1)定位字符串:t_contract_order.sign_date

        2)最终得到结果:

解决问题思路:

        1)定位要找的字符串起始位置和截止位置

                起始位置的定位:    

#--------定位字符串出现的位置
pattern = "t_contract_order.sign_date"
# 使用 re.finditer 查找所有出现的位置
positions = [match.start() for match in re.finditer(pattern, teststr)]

                结束位置的查找技巧是找到第二次出现单引号的位置,使用函数

def find_char_second_occurrence(s, start, char):first_index = s.find(char, start)if first_index == -1:return -1second_index = s.find(char, first_index + 1)return second_index if second_index != -1 else first_index

        2)去除相关内容,保持sql其他内容的正确性和完整性

for tmpstr in tmpstrs:print(tmpstr)tstr=' and '+tmpstrprint(tstr)teststr=teststr.replace(tstr,'')tstr = ' or ' + tmpstrteststr = teststr.replace(tstr, '')tstr = tmpstr +' and 'teststr = teststr.replace(tstr, '')tstr = tmpstr + ' or 'teststr = teststr.replace(tstr, '')tstr = tmpstrteststr = teststr.replace(tstr, '')print(f'sql={teststr}')

最后将完整代码提供给大家:

import re
def find_char_second_occurrence(s, start, char):first_index = s.find(char, start)if first_index == -1:return -1second_index = s.find(char, first_index + 1)return second_index if second_index != -1 else first_index# sql查询语句测试使用
teststr = "where t_contract_order.sign_date<='2019-01-01 00:00:00'" \" and a=b or t_contract_order.sign_date>='2024-01-01 00:00:00'" \" and t_contract_order.sign_date<='2024-12-31 23:59:59'" \" or c=d or t_contract_order.sign_date>='2025-02-28 23:59:59'"#--------定位字符串出现的位置
pattern = "t_contract_order.sign_date"
# 使用 re.finditer 查找所有出现的位置
positions = [match.start() for match in re.finditer(pattern, teststr)]
print(f'字符串{pattern}出现的位置{positions}')
character = "'"
tmpstrs=[]
for position in positions:second_occurrence = find_char_second_occurrence(teststr, position, character)tmpstrs.append(teststr[position:second_occurrence+1])print(position,second_occurrence,teststr[position:second_occurrence+1])
for tmpstr in tmpstrs:print(tmpstr)tstr=' and '+tmpstrprint(tstr)teststr=teststr.replace(tstr,'')tstr = ' or ' + tmpstrteststr = teststr.replace(tstr, '')tstr = tmpstr +' and 'teststr = teststr.replace(tstr, '')tstr = tmpstr + ' or 'teststr = teststr.replace(tstr, '')tstr = tmpstrteststr = teststr.replace(tstr, '')print(f'sql={teststr}')

如果对你有所帮助,请帮忙点赞+关注+分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习心得】PyTorch的知识要点复习(持续更新)

PyTorch知识要点复习&#xff0c;目的是为了巩固PyTorch基础、快速回顾、深化理解PyTorch框架。这篇文章会持续更新。 一、本文的一些说明 知识点梳理&#xff1a;我将PyTorch的核心概念和高级技巧进行了系统化的整理&#xff0c;从基础的张量操作到复杂的模型构建与训练。这样…

【Linux】进程终止与进程等待

目录 进程终止 errno exit和_exit 进程等待 wait和waitpid 宏&#xff1a;WIFEXITED 非阻塞等待 进程终止 下面要谈的一个话题就是进程终止&#xff0c;就是说一个进程退出了&#xff0c;可能有三种情况 1.进程代码执行完&#xff0c;结果是正确的 2.进程代码执行完&…

【活动】开源与闭源大模型:探索未来趋势的双轨道路

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 开源与闭源大模型&#xff1a;探索未来趋势的双轨道路引言一、开源大模型&#…

翻译《The Old New Thing》- The importance of the FORMAT_MESSAGE_IGNORE_INSERTS flag

The importance of the FORMAT_MESSAGE_IGNORE_INSERTS flag - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20071128-00/?p24353 Raymond Chen 2007年11月28日 FORMAT_MESSAGE_IGNORE_INSERTS 标志的重要性 简要 文章讨论了使用FormatMes…

评估企业的业务是否存在高风险的六个步骤

风险的幽灵使得组织别无选择&#xff0c;只能改善各种网络风险的总体管理。以下是一个基于信息安全论坛的IRAM2方法论的分步过程&#xff0c;网络安全和风险从业者可以利用它来评估和管理信息风险。 第1步&#xff1a;范围界定练习 范围界定练习的目标是提供一个以业务为中心…

基于springboot+vue的招聘信息管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

K8s的常用命令以及yaml文件的创建

目录 一、声明式管理方法&#xff1a;YAML文件 1、yaml文件简介 2、yaml和json的主要区别&#xff1a; 3、YAML的语法格式 4、yaml文件组成部分 ①控制器定义 5、查看api资源版本标签 6、编写nginx-deployment.yaml资源配置清单 6.1创建资源对象 6.2查看创建的pod资源…

Unity-Sprite Atlas+UGUI系统的运行原理

每日一句&#xff1a;别听世俗耳语&#xff0c;看自己的风景就好 目录 SA的原理&#xff1a; SA的优点&#xff1a; SA的缺点&#xff1a; DrawCall是什么&#xff1f; 批处理是什么&#xff1f; 我们先了解一下UGUI系统的运行原理吧&#xff01; 提到图集优化&#xff0…

cocosCreator动态生成二维码

cocosCreator 版本&#xff1a;3.7.2 开发语言&#xff1a;typeScript 我们在游戏开发中&#xff0c;经常会生成一个专属于玩家个人的二维码&#xff0c;比如说推广、充值等功能。 接到这个任务&#xff0c;在网上找了下&#xff0c;还是有很多教程的。但是这些教程大部分都是用…

Ollydbg动态分析MessageBoxA输出hellow world

一、目的 找到main函数找到调用的MessageBoxA函数 测试源码 #include <iostream> #include <windows.h>int main() {MessageBoxA(NULL, "Hellow World", "Title", MB_OK);return 1; }二、快捷键 指令快捷键说明RestartCtrlF2重新开始调试S…

buu[HCTF 2018]WarmUp(代码审计)

buu[HCTF 2018]WarmUp&#xff08;代码审计&#xff09; 题目 访问source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php…

电脑键盘如何练习盲打?

电脑键盘如何练习盲打&#xff1f;盲打很简单&#xff0c;跟着我做&#xff0c;今天教会你。 请看【图1】&#xff1a; 【图1】中&#xff0c;红色方框就是8个基准键位&#xff0c;打字时我们左右手的8个手指就是放在这8个基准键位上&#xff0c;F键和J键上各有一个小突起&…

Spring6基础笔记

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发…

mysql图形化界面及将mysql注册成后台程序

安装图形化界面版本 右键新建数据库 字符集使用utf8防止以后数据库中存在中文字符导致乱码 将mysql注册成后台程序 cmd进入命令行界面 切换路径到cd /mysql/bin 将mysql注册成后台程序 mysqld.exe --install mysql1 (失败&#xff0c;说明没有权限) 以管理员身份打开成功…

SYSTEM文件夹介绍(sys文件夹、deley文件夹、USART 文件夹、SysTick、printf函数、fputc函数、半主机模式)

参考 http://t.csdnimg.cn/P9H6x 一、sys文件夹介绍 在上述介绍的 sys 文件夹中&#xff0c;涉及了一些与系统控制、中断管理、低功耗模式、栈顶地址设置、系统时钟初始化以及缓存配置等相关的函数。以下是对每个功能的简要分析&#xff1a; 1.中断类函数&#xff1a; sys_n…

CCF20230901——坐标变换(其一)

CCF20230901——坐标变换&#xff08;其一&#xff09; #include<bits/stdc.h> using namespace std; int main() {int n,m,x[101],y[101],x1[101],y1[101];cin>>n>>m;for(int i0;i<n;i)cin>>x1[i]>>y1[i];for(int j0;j<m;j)cin>>x[…

负反馈系统中运放的相位裕度仿真、环路增益的stb仿真

这里没目录标题 一、引言二、巴克豪森判据、最坏情况下的相位裕度、相位裕度三、相位裕度与开环&#xff0c;环路&#xff0c;闭环增益的关系四、环路增益、闭环增益和相位的仿真4.1 运放为双入单出时4.1.1 系统的闭环增益4.1.2 stb仿真系统的环路增益和相位裕度&#xff08;环…

Python项目:数据可视化_下载数据【笔记】

源自《Python编程&#xff1a;从入门到实践》 作者&#xff1a; Eric Matthes 02 下载数据 2.1 sitka_weather_07-2021_simple.csv from pathlib import Path import matplotlib.pyplot as plt import csv from datetime import datetimepath Path(D:\CH16\sitka_weather_0…

python web自动化(Allure报告)

Allure详细安装请看之前的博客 1.Allure配置与⼊⻔ 运⾏⽤例&#xff0c;⽣成allure报告 pip install allure-pytest -i https://mirrors.aliyun.com/pypi/simple/ 运⾏⽤例&#xff0c;⽣成allure报告 # main.py import os import pytest if __name__ __m…

ROS学习记录:用C++实现IMU航向锁定

前言 获取IMU数据的C节点 在了解了如何获取到IMU的姿态信息&#xff08;链接在上面&#xff09;后&#xff0c;接下来尝试实现让一个节点在订阅IMU数据的时候&#xff0c;还能发布运动控制指令&#xff0c;使机器人能对姿态变化做出反应&#xff0c;达到一个航向锁定的效果。 …