首页 >数据库 >mysql教程 >如何在 SQL 中拆分逗号分隔的 VARCHAR 列值?

如何在 SQL 中拆分逗号分隔的 VARCHAR 列值?

DDD
DDD原创
2024-12-16 14:37:17235浏览

How to Split Comma-Separated VARCHAR Column Values in SQL?

在 SQL 中拆分 VARCHAR 列值

在 SQL 中,VARCHAR 数据类型存储可变长度字符串。处理 VARCHAR 列时,可能需要将列值拆分为多个单独的值。

假设您有一个如下所示的 SQL SELECT 语句:

SELECT 
  AD_Ref_List.Value
FROM AD_Ref_List
WHERE AD_Ref_List.AD_Reference_ID= 1000448

此语句返回所有AD_Ref_List 表中 Value 列的值,其中 AD_Reference_ID 列等于 1000448。结果可能如下所示this:

Value
CO,VO

在此结果中,值列包含以逗号分隔的值列表。要进一步过滤结果,您可能需要将值拆分为单独的行,例如:

Value
CO
VO

实现此目的的一种方法是使用 IN 运算符,如下所示:

SELECT 
  AD_Ref_List.Value
FROM AD_Ref_List
WHERE AD_Ref_List.AD_Reference_ID= 1000448
AND AD_Ref_List.Value IN
  (SELECT xx_insert.XX_DocAction_Next
  FROM xx_insert
  WHERE xx_insert_id = 1000283
  )
;

但是,此查询可能不会返回任何行,因为 Oracle 将值列表视为单个字符串,而不是单个值。要解决此问题,您可以使用以下技术:

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;

此查询使用 LIKE 运算符来检查 AD_Ref_List 表中的值是否是 xx_insert 表中的值列表的子字符串。这将返回所需的结果,“值”列中的每个值都显示为单独的行。

以上是如何在 SQL 中拆分逗号分隔的 VARCHAR 列值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn