Oracle SQL 查询:根据 IP 列表匹配获取数据
可以使用 Oracle 的内置函数和运算符来实现这个功能。以下是一个示例 SQL 查询语句,可以实现你描述的功能:\n\nsql\nSELECT *\nFROM A\nWHERE EXISTS (\n SELECT 1\n FROM B\n WHERE B.ip IN (\n SELECT TRIM('"' FROM REGEXP_SUBSTR(A.ipList, '[^,]+', 1, LEVEL))\n FROM DUAL\n CONNECT BY LEVEL <= REGEXP_COUNT(A.ipList, ',') + 1\n )\n AND B.groupName = 'test'\n);\n\n\n这个查询使用了子查询和内置函数来处理数据。首先,子查询中的 CONNECT BY LEVEL 将 A 表中的 ipList 字段拆分为一个个 IP 地址。然后,使用 TRIM 和 REGEXP_SUBSTR 函数来去除 IP 地址中的引号和逗号,得到一个 IP 地址列表。接下来,使用 REGEXP_COUNT 函数获取 IP 地址列表中的 IP 个数。最后,使用 EXISTS 子句来检查 B 表中是否存在满足条件的 IP 地址,并且 groupName 字段的值为 'test'。如果满足条件,则返回 A 表中的记录。\n\n请注意,这只是一个示例查询语句,具体的查询逻辑和字段名需要根据实际情况进行调整。
原文地址: https://www.cveoy.top/t/topic/pRor 著作权归作者所有。请勿转载和采集!