Sql-Server

如何在字元串逗號分隔的情況下使用 IN

  • January 30, 2022

我在 table1 中有這樣的價值:

Value
-------
JT, KF, LF

在其他表中選擇時如何獲得這樣的值

Select a.Field from table2
Inner Join Table1 on Table1.field = Table2.field
Where Type IN(Table2.Value)

您使用的是哪個版本的 SQL?如果您在 2016 年以上,則可以使用STRING_SPLIT(請參見下面的範例)。

SELECT a.Field 
FROM table2
   INNER JOIN Table1 
       ON Table1.field = Table2.field
WHERE Type IN 
   ( 
   SELECT LTRIM(RTRIM(P.[value])) 
   FROM STRING_SPLIT(Table1.[Value], ',') AS P
   )

參考: STRING_SPLIT (Microsoft | SQL Docs)

根據原始問題的標準,Jonathan Fite 有一個很好的功能性答案。

但是,如果沒有人指出 STRING_SPLIT 將在 Table1 的每一行上執行,我覺得我們這樣做是不公平的。根據 Tabel1 的規模或將來的規模,這可能會產生很多成本。根據表的建立方式,在將這些值插入數據庫之前拆分這些值可能更有意義。

引用自:https://dba.stackexchange.com/questions/306671