在 SQL 中将 VARCHAR 列拆分为多个值
您的目标是根据以下条件将 VARCHAR 列 AD_Ref_List.Value 拆分为多个值存储在另一个表中的值,特别是 xx_insert.XX_DocAction_Next。但是,您遇到了 Oracle 将分隔列表中的值解释为单个字符串的问题,导致您的查询不返回任何行。
要解决此问题,您可以修改查询以在值周围包含分隔符在 IN 子句中,确保 Oracle 将它们识别为单独的值以进行比较。此外,您可以使用 LIKE 运算符来检查 AD_Ref_List.Value 中的值是否是分隔列表的子字符串(也包含分隔符)。
以下是包含这些更改的修订后的查询:
SELECT r.Value FROM AD_Ref_List r INNER JOIN xx_insert x ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' ) WHERE r.AD_Reference_ID = 1000448 AND x.xx_insert_id = 1000283;
通过将值包装在分隔符中,此查询将有效地将 VARCHAR 列拆分为多个值,允许您根据另一个表中的值。
请注意,虽然此查询可能提供所需的功能,但它可能不是最有效的方法。如果可能,通常建议避免在 SQL 中操作分隔列表,因为它可能会带来复杂性和性能问题。相反,请考虑使用更合适的数据结构(例如数组或 JSON 对象)来存储和操作数据。
以上是如何在 SQL 中使用分隔符将 VARCHAR 列拆分为多个值?的详细内容。更多信息请关注PHP中文网其他相关文章!