如何在与SQL92的联接中使用“赞”?

时间:2018-07-26 16:00:14

标签: sql

我正在尝试在join语句中使用like。我的原因是我有一个字段是varchar,而另一个字段也是varchar,但是,第二个字段是逗号分隔的列表。

SELECT c.Class, c.SubClass, c.Value, c.Pairs, c.Description, prodt.ProductType, p.Type
FROM pub.table1 c 
INNER JOIN pub.Table2 p ON c.SubClass like CONCAT(CONCAT('%',p.Type),'%')
INNER JOIN pub.Table3 prodt ON p.ProdType = prodt.ProductType  
WHERE c.Class = 'whatever' 

在这种情况下,p.Type是用逗号分隔的列表,而SubClass是普通的varchar。

我已经尝试使用一些不同的东西。我本以为下面的方法有用,但没有用。

INNER JOIN pub.Table2 p ON c.SubClass like '%' + p.Type +'%' 

有没有办法做到这一点,或者我有做其他不同的事情,例如使用SQL92进行另一个选择吗?先感谢您!

2 个答案:

答案 0 :(得分:2)

根据您的解释,您需要交换$result = mysqli_query($conn, $sql) or trigger_error(mysqli_error($conn)); ,因为LIKE包含值列表。

p.Type

您的代码:

p.Type like '%' + c.SubClass + '%' 

这里是一个样本测试来显示这一点:

SELECT c.Class, c.SubClass, c.Value, c.Pairs, c.Description, prodt.ProductType, p.Type
FROM pub.table1 c 
INNER JOIN pub.Table2 p ON p.Type like '%' || c.SubClass || '% '
INNER JOIN pub.Table3 prodt ON p.ProdType = prodt.ProductType  
WHERE c.Class = 'whatever' 

答案 1 :(得分:1)

我猜您想要这样的东西:

ON ',' || p.type || ',' like '%,' || c.subsclass || ',%'

||长期以来一直是ISO / ANSI SQL中的字符串连接运算符。老实说,我不记得这个运算符的采用是否可以追溯到26年。