Sql-Server
如何在字元串逗號分隔的情況下使用 IN
我在 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 的規模或將來的規模,這可能會產生很多成本。根據表的建立方式,在將這些值插入數據庫之前拆分這些值可能更有意義。