数据库A,列名:操作任务为操作任务,列名操作步骤为操作步骤, 操作步骤的第一条数据为: 理工站,拉开2019K11刀闸,检查2018装设GH78刀闸在拉开; 第二条数据为: 广泰是的购物车站点,断开KV母线1M开关,检查KV母线1M开关在分闸; 用PGsql查看"操作步骤"列中, 提取"断开"和"开关"之间的内容, 判断提取出来的内容与后面的"检查"和"开关在分闸"之间的内容是否一致;
时间: 2023-07-21 16:32:06 浏览: 26
你可以使用如下的PGsql查询语句来提取操作步骤中"断开"和"开关"之间的内容,并判断提取出来的内容与后面的"检查"和"开关在分闸"之间的内容是否一致:
```
SELECT 操作任务, 操作步骤,
substring(操作步骤, '断开(.*?)开关') AS 断开开关之间内容,
substring(操作步骤, '检查(.*?)开关在分闸') AS 检查开关在分闸之间内容
FROM A
WHERE 操作步骤 ~ '断开.*开关.*检查.*开关在分闸';
```
这个查询语句会从你的A表中选择出所有操作步骤描述中包含"断开"和"开关"的步骤,以及包含"检查"和"开关在分闸"的步骤,并且这两个内容之间没有其他字符。然后使用substring函数来提取"断开"和"开关"之间的内容以及"检查"和"开关在分闸"之间的内容,并将这些内容和原始的操作任务和操作步骤一起输出到结果中。你可以查看这些提取出来的内容是否与后面的"检查"和"开关在分闸"之间的内容一致。注意要把"A"替换成你的表名,"操作任务"和"操作步骤"替换成你的列名。
相关问题
数据库A,列名:操作任务为操作任务,列名操作步骤为操作步骤, 操作步骤的第一条数据为: 理工站,拉开2019K11刀闸,检查2018装设GH78刀闸在拉开; 第二条数据为: 广泰是的购物车站点,断开KV母线1M开关,检查KV母线1M开关在分闸; 用PGsql查看"操作步骤"列中, "断开"和"开关"之间的内容 与后面的"检查"和"开关在分闸"之间的内容一模一样;
你可以使用如下的PGsql查询语句来查看操作步骤中, "断开"和"开关"之间的内容 与后面的"检查"和"开关在分闸"之间的内容是否完全一致:
```
SELECT *
FROM A
WHERE
操作步骤 ~ '断开.*开关.*检查.*开关在分闸';
```
这个查询语句会从你的A表中选择出所有操作步骤描述中包含"断开"和"开关"的步骤,以及包含"检查"和"开关在分闸"的步骤,并且这两个内容之间没有其他字符,然后将这些步骤输出到结果中,你可以查看这些步骤的内容是否完全一致。注意要把"A"替换成你的表名,"操作任务"和"操作步骤"替换成你的列名。
数据库A,列名:aa为操作任务,列名bb为操作步骤, bb的第一条数据为: 理工站,拉开2019K11刀闸,检查2018装设GH78刀闸在拉开; 第二条数据为: 广泰是的购物车站点,断开KV母线1M开关,检查KV母线1M开关在分闸; 用PGsql查看同一个“操作任务”的“操作步骤”中, "断开"和"开关"之间的内容 与其后面的"检查"和"开关在分闸"之间的内容一致
可以使用以下SQL语句来查询同一个“操作任务”的“操作步骤”中, "断开"和"开关"之间的内容 与其后面的"检查"和"开关在分闸"之间的内容一致的数据:
```
SELECT aa, bb
FROM 数据库A
WHERE aa IN (
SELECT aa
FROM 数据库A
WHERE bb LIKE '%断开%开关%'
GROUP BY aa
HAVING COUNT(DISTINCT SUBSTRING(bb, CHARINDEX('断开', bb)+2, CHARINDEX('开关', bb)-CHARINDEX('断开', bb)-2)) = 1
)
AND bb LIKE '%断开%开关%'+ SUBSTRING(bb, CHARINDEX('断开', bb)+2, CHARINDEX('开关', bb)-CHARINDEX('断开', bb)-2) + '%检查%开关在分闸%'
```
其中,`SUBSTRING(bb, CHARINDEX('断开', bb)+2, CHARINDEX('开关', bb)-CHARINDEX('断开', bb)-2)`用于提取出“断开”和“开关”之间的内容,`LIKE`和`%`用于模糊匹配对应的字眼。