用pgsql查询以下数据: 1、在110kV天堂变电站10kV湾中线#28塔28T12刀闸线路侧装设10kv/接地线1组。 2、在110kV天堂变电站10kV湾中线铜接地线一组锣环支线#30杆大号侧装设10kv/接地线一组。 3、在110kV天堂变电站10kV湾中线铜接地线锣三组环支线#30杆大号侧装设10kv/=组。 要求: 先提取“接地线”和最近的“组”之间的内容,若有多个接地线,则用顿号隔开 , 后判断“接地线”和“组”之间是否为阿拉伯数字或汉语数字一二三四五六七八九十。
时间: 2024-03-17 07:43:29 浏览: 45
可以使用以下SQL语句查询符合条件的数据:
```
SELECT description
FROM table_name
WHERE regexp_matches(substring(description, '接地线(\S*?)组'), '^.*?(接地线.*?)([一二三四五六七八九十\d]+)组.*$', 'g') IS NOT NULL
```
其中,table_name是数据表的名称,description是包含数据的描述字段。这个语句会从数据表中选择符合条件的数据,即包含"接地线"和"组"之间内容的数据,并且这个内容是阿拉伯数字或汉语数字一二三四五六七八九十。如果有多个接地线,则用顿号隔开。
这个查询语句使用了正则表达式函数regexp_matches来提取符合条件的部分,然后使用正则表达式`^.*?(接地线.*?)([一二三四五六七八九十\d]+)组.*$`来判断是否符合要求。其中,`(接地线.*?)`表示匹配"接地线"和最近的"组"之间的内容,`([一二三四五六七八九十\d]+)`表示匹配阿拉伯数字或汉语数字一二三四五六七八九十。
相关问题
用pgsql查询以下数据: 1、在110kV天堂变电站10kV湾中线#28塔28T12刀闸线路侧装设10kv/接地线1组。 2、在110kV天堂变电站10kV湾中线铜接地线一组锣环支线#30杆大号侧装设10kv/接地线一组。 3、在110kV天堂变电站10kV湾中线铜接地线锣三组环支线#30杆大号侧装设10kv/=组。 要求: 提取“接地线”和最近的“组”之间的内容,若有多个,则用顿号隔开 ,
假设数据存储在名为“data”的表中,可以使用以下SQL查询语句来提取需要的信息:
```
SELECT
substring(description, '接地线(.+?)组') as grounding_info
FROM
data
WHERE
description LIKE '%接地线%'
ORDER BY
position('组' IN substring(description, position('接地线' IN description))) ASC;
```
解释一下上述查询语句的各部分:
- `substring(description, '接地线(.+?)组')`:使用正则表达式从字段"description"中提取出"接地线"和"组"之间的内容。其中".+?"表示任意字符的非贪婪匹配,保证只匹配到最近的"组"。
- `WHERE description LIKE '%接地线%'`:筛选出包含"接地线"的记录。
- `ORDER BY position('组' IN substring(description, position('接地线' IN description))) ASC`:按照从"接地线"到最近的"组"的距离升序排序,以确保提取的是最近的"组"。
这样,查询结果就只包含"接地线"和最近的"组"之间的内容,多个内容之间用逗号隔开。
有以下三条数据 1、在110kV天堂变电站10kV湾中线#28塔28T12刀闸线路侧装设10kv/接地线1组。 2、在110kV天堂变电站10kV湾中线铜接地线一组锣环支线#30杆大号侧装设10kv/接地线一组。 3、在110kV天堂变电站10kV湾中线铜接地线锣三组环支线#30杆大号侧装设10kv/=组。 用pgsql 判断“接地线”和“组”之间是否为阿拉伯数字
可以使用正则表达式函数regexp_matches()来判断“接地线”和“组”之间是否为阿拉伯数字。
以下是示例代码:
```sql
SELECT
CASE
WHEN regexp_matches(description, '接地线(\d+)组', 'g') IS NOT NULL THEN '是'
ELSE '否'
END AS is_arabic_num
FROM data_table;
```
其中,description是包含上述三条数据的字段名,data_table是包含description字段的表名。
这个查询会返回一个包含一列名为is_arabic_num的结果集,其中每一行表示对应的数据行中“接地线”和“组”之间是否为阿拉伯数字的判断结果。如果是阿拉伯数字,则返回“是”,否则返回“否”。
阅读全文