我有一个带有2列名称和数据包的表。包的一个示例值是“BGA,BGA DUAL DIE,QFP,QFP DUAL DIE”。

java - Oracle SQL在一列中选择特定值,该列包含许多用逗号分隔的值-LMLPHP

我如何做一个SQL,它可以准确选择我输入的程序包名称。
假设对于我的部分代码,bd.pkg的输入为“BGA”

def generateBdHistoryTable(ApprovalHeader ah,BondingDiagram bd){
    if(bd.pkg!=null){
                String kitTypeHolder;
                def kitTypeMap = [:];
                List kitTypeLists = KitType.executeQuery("select name from KitType where (packages like '"+bd.pkg+"%' or packages like '%,"+bd.pkg+"%')");

结果是针对包含以下内容的行
BGA
BGA DUAL DIE

我只希望输入为“BGA”时得到包“BGA”的名称,输入为“BGA DUAL DIE”时得到包的名称,以此类推。我应该如何查询这种情况?

最佳答案

select name
from   KitType
where  ','||packages||',' like '%,BGA,%'

或使用正则表达式:
select name
from   KitType
where  REGEXP_LIKE( packages, '(^|,)BGA(,|$)' )

08-06 17:17