Sql 从表字段中使用多个相似条件选择行
我用外部软件生成的CSV文件创建了一个表。 在其他字段中,此表包含一个名为“CustomID”的字段。 此表上的每一行都必须使用该字段的内容链接到客户。 每个客户可以自行决定是否拥有一组或多组CustomID,只要每个序列以相同的前缀开始。 例如: 客户1可以使用“cust1_n”和“cstm01_n”(其中n是一个数字) 客户2可以使用“客户2\u n” 现在,我创建了两个支持表,如下所示:Sql 从表字段中使用多个相似条件选择行,sql,sql-like,Sql,Sql Like,我用外部软件生成的CSV文件创建了一个表。 在其他字段中,此表包含一个名为“CustomID”的字段。 此表上的每一行都必须使用该字段的内容链接到客户。 每个客户可以自行决定是否拥有一组或多组CustomID,只要每个序列以相同的前缀开始。 例如: 客户1可以使用“cust1_n”和“cstm01_n”(其中n是一个数字) 客户2可以使用“客户2\u n” 现在,我创建了两个支持表,如下所示: Customers PKID Name ---- --------------------
Customers
PKID Name
---- --------------------
1 Customer 1
2 Customer 2
及
我需要实现的是使用客户的CustomIDs表中的所有类似条件检索给定客户的所有行。
到目前为止,我失败得很惨。
有什么线索吗?
提前谢谢。
银色。要像使用一样使用,必须将图案中的*替换为%。不同的dbms使用不同的函数进行字符串操作。假设有一个替换函数可用:
SELECT ir.*
FROM ImportedRows ir
JOIN CustomIDs c ON ir.CustomID LIKE REPLACE(c.SearchPattern, '*', '%')
WHERE c.FKCustomerID = 1;
在这里询问SQL问题时,您应该始终命名您的dbms,因为不同的dbms(甚至版本)在可用的函数方面有所不同。@ThorstenKettner更不用说,即使是基本的SQL命令或数据类型有时对某些边缘情况也有不同的含义或限制。还考虑提供一个,银。我是多么愚蠢…我不知道我可以用LIKE作为连接条件。。。谢谢你,伙计!它显然是有效的。。。
CustomIDs
PKID FKCustomerID SearchPattern
---- ------------ -------------
1 1 cust1_*
2 1 cstm01_*
3 2 customer2_*
SELECT ir.*
FROM ImportedRows ir
JOIN CustomIDs c ON ir.CustomID LIKE REPLACE(c.SearchPattern, '*', '%')
WHERE c.FKCustomerID = 1;