数据库A,数据表S,字段SEH, 用pgsql提取字段SEH数据中开头为kv,结尾为数据中最后一个“线”字之间的内容, 设为字段BB,判断字段AA和字段CC中是否包括字段BB的部分内容,不需要完全相同
时间: 2024-03-27 14:40:44 浏览: 78
判断记录是否存在,取某个特定字段值,取多个字段值
可以使用如下 SQL 语句提取字段 SEH 的数据中开头为 kv,结尾为数据中最后一个“线”字之间的内容,并将其设为字段 BB:
```sql
SELECT
SUBSTRING(SEH FROM 'kv[^-]*-([^-]*)') AS BB
FROM
S
```
其中,`SUBSTRING` 函数用于提取符合正则表达式 `kv[^-]*-([^-]*)` 的内容。正则表达式的含义是:以 `kv` 开头,后面跟着任意数量的非“-”字符,然后是一个“-”字符,最后是一个“-”字符后的任意数量的非“-”字符。这样就可以提取出开头为 kv,结尾为数据中最后一个“线”字之间的内容。
接着,可以使用如下 SQL 语句判断字段 AA 和字段 CC 中是否包括字段 BB 的部分内容,不需要完全相同:
```sql
SELECT
CASE
WHEN AA LIKE '%' || BB || '%' THEN 'AA 包含 BB 的部分内容'
ELSE 'AA 不包含 BB 的部分内容'
END AS Result1,
CASE
WHEN CC LIKE '%' || BB || '%' THEN 'CC 包含 BB 的部分内容'
ELSE 'CC 不包含 BB 的部分内容'
END AS Result2
FROM
A
```
其中,`LIKE` 运算符用于判断一个字符串是否包含另一个字符串,`||` 运算符用于字符串拼接。如果字段 AA 包含字段 BB 的部分内容,则 `AA LIKE '%' || BB || '%'` 的结果为 true。如果字段 CC 包含字段 BB 的部分内容,则 `CC LIKE '%' || BB || '%'` 的结果为 true。根据结果可以返回相应的提示信息。
阅读全文