[英]Search for multiple values in IN clause located in where clause
我正在擴展搜索功能,並且需要在IN子句中添加對多個值的搜索。 所以我有文本框,並在其中寫了一些數字。 這是動態功能,可以向SQL的WHERE
子句添加查詢語法,僅在搜索時才應添加。
假設我們在文本框中輸入1056進行搜索。
SELECT
*
FROM
QueryTable
WHERE
(Select ID from SearchTable Where Number='1056') IN
(SELECT value FROM OPENJSON(JsonField,'$.Data.ArrayOfIds'))
之所以能正常工作,是因為在SearchTable
搜索ID SearchTable
返回一行,但是當返回多行時,我想使其工作,例如:
(Select ID from SearchTable Where Number like '%105%')
這顯然會產生錯誤,因為會返回多個記錄。 在IN子句中搜索多個值(或值的數組)的方法是什么?
使用EXISTS
。 我認為這就是您所需要的(沒有樣本數據可用來確認):
FROM QueryTable QT
WHERE EXISTS (SELECT 1
FROM SearchTable ST
JOIN OPENJSON(QT.JsonField,'$.Data.ArrayOfIds') J ON ST.ID = J.[value]
WHERE ST.Number LIKE '%105%')
注意:我已經為所有內容添加了別名,但是我猜到了JsonField
的別名。 量化列非常重要,這樣可以避免意外行為,並使您自己和他人的代碼都更容易閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.