簡體   English   中英

在where子句中的IN子句中搜索多個值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM