Regex类似于SQL查询python中的语法

问题描述 投票:0回答:2

我有一些代码必须重新编写才能投入生产。代码很乱,我有几行指示sql查询,但是我无法解析确切的语句。

qs = 'DEVICENAME1|DEVICENAME2|DEVICENAME3'

qstring='SELECT "lat", "lon", "device", "location" FROM "locations" WHERE ("device" =~ /^('+qs+')/) AND time > now()-60h'

qstring='SELECT "device", "lat" FROM "locations" WHERE ("location"=~ /^'+loc+'$/) AND time > now()-60h'

如果有人可以为我解决sql查询语句,我将不胜感激。需要明确的是,我对以下部分感兴趣:("device" =~ /^('+qs+')/)("location"=~ /^'+loc+'$/)

python sql regex influxdb influxdb-python
2个回答
1
投票

[从概念上讲,"device" =~ /^('+qs+')/表示:检查以qs开头的设备(^代表字符串的开头),并且"location"=~ /^'+loc+'$/检查该位置是否等于loc$为字符串的结尾)。

因此,在几乎所有数据库中,无需使用正则表达式都可以重写这些条件:

"device" like ' + qs+ '%  -- influxdb does not support like
"location" = ' + loc + '

旁注:为了安全和有效,您应该在各处使用准备好的语句和参数化查询。由于您正在重写旧代码,因此现在是这样做的好地方。


0
投票

可以在文档中找到完整的解释:https://docs.influxdata.com/influxdb/v1.2/query_language/data_exploration/#syntax-15Influxdb支持Golang的正则表达式语法。

© www.soinside.com 2019 - 2024. All rights reserved.