在 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中文网其他相关文章!