我有两个表:
表1
atypcode | ABRNCHCOD | tarikh | codel
1523 | 375 | 1397/06/31 | 375-500-652278-2,375-500-652278-3
2179 | 344 | 1397/06/31 | 344-800-909999-1,344-800-909999-2
2175 | 344 | 1397/06/31 | 344-500-1885840-1,344-500-1885840-2
1523 | 375 | 1397/06/31 | 375-500-2852450-1,375-500-2852450-4
1523 | 375 | 1397/06/31 | 375-500-651108-1,375-500-651108-2,375-500-651108-3
4901 | 154 | 1397/06/31 | 154-305-260752-1,154-200-260752-1,154-800-13557-1
2175 | 344 | 1397/06/31 | 344-500-1075560-1,344-500-1075560-2
3312 | 344 | 1397/06/31 | 344-500-1885840-1,344-500-1885840-2
表2
tarikh | codel | mande
1397/06/31 | 115-112-1882936-1 | 2798089.00
1397/06/31 | 115-112-1974907-1 | 72580645.00
1397/06/31 | 115-112-1974907-2 | 19052419.00
1397/06/31 | 115-112-2431483-1 | 0.00
1397/06/31 | 115-112-2472323-1 | 2643835.00
1397/06/31 | 115-112-2559539-1 | 1344235.00
1397/06/31 | 115-112-2807485-1 | 113614.00
1397/06/31 | 115-512-2556810-1 | 0.00
1397/06/31 | 115-512-2986840-1 | 130000000.00
1397/06/31 | 115-512-570205-1 | 0.00
在表1中,表2中仅存在一个编解码器 如何在不带“ in”的情况下基于codel搜索table1中的table2。
谢谢
答案 0 :(得分:1)
第二个表中的代码似乎都没有与第一个表匹配,而且,您不应该这样存储CSV数据。话虽如此,我们可以尝试以下技巧:
SELECT t2.tarikh, t2.codel, t2.mande
FROM table2 t2
WHERE EXISTS (SELECT 1 FROM table1 t1
WHERE ',' + t1.codel + ',' LIKE '%,' + t2.codel + ',%');
要了解其工作原理,请考虑表1 codel
的值:
375-500-651108-1,375-500-651108-2,375-500-651108-3
我们首先在此值的两边用逗号括起来,得到:
,375-500-651108-1,375-500-651108-2,375-500-651108-3,
然后,我们只需要从表2中搜索一个给定的codel
值,该值也用逗号括起来,例如该字符串。搜索,375-500-651108-1,
。
答案 1 :(得分:0)
https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017
尝试使用字符串拆分功能,并在连接中使用它。请在Select子句中拆分它并使用Alias。
STRING_SPLIT ( string , separator )