簡體   English   中英

SQL選擇語句LIKE IN

[英]SQL Select Statement LIKE IN

我需要編寫一條select語句,該語句返回一個用戶列表,該用戶列表中存在一個名為constraint_values的字段,其中包含SenderSubID的列表:

我理想地需要一個LIKE IN語句:

SELECT SenderSubID FROM fix_user_subids WHERE SenderSubID IN ('**00390529MGERAN1**','**00912220PBALDIS**','**03994113LDAMBRO**','**04004308SLOMBAR**','**04935278CARELLI**','**4004308SLOMBARD**')

SELECT * FROM fix_dyno_rule_defs WHERE constraint_values LIKE '%**00390529MGERAN1**%'

返回值:

rule_def_id tag msg_type required constraint_values constraint_type data_type default_value validation_type trans_type attribute_tag trans_tag memo 99800 10000 D,F,G 0 ((50,4,1, 00390529MGERAN1 )or(50,4,1,00912220PBALDIS)or(50,4,1,03994113LDAMBRO)or(50,4,1,04004308SLOMBAR)or(50,4,1,04935278CARELLI)or(50,4,1,4004308SLOMBARD))and(21,4,1,3)#STROP1#addattr(EQD,EQST) 0 1 #TAG=6506# 12 1800 0 0 Set EQD=1 for Equity Desk

我這樣寫:

SELECT * FROM fix_dyno_rule_defs WHERE constraint_values LIKE '%' + (SELECT MAX(SenderSubID) FROM fix_user_subids WHERE SenderSubID IN ('00390529MGERAN1','00912220PBALDIS','03994113LDAMBRO','04004308SLOMBAR','04935278CARELLI','4004308SLOMBARD')) +'%'

但是需要它而不需要MAX,因為有一個列表...

您沒有理想。 使用or

SELECT SenderSubID
FROM fix_user_subid
WHERE SenderSubID like '%00390529MGERAN1%' OR
      SenderSubID like '%00912220PBALDIS%' OR
      SenderSubID like '%04004308SLOMBAR%' OR
      SenderSubID like '%04935278CARELLI%' OR
      SenderSubID like '%4004308SLOMBARD%'

如果我正確地閱讀了您的問題(可能不是!),您正在尋找從表fix_dyno_rule_defs獲得結果的方法。

在這種情況下,您不能只是簡單地加入嗎?

即:

SELECT DISTINCT fdrd.*
FROM  fix_dyno_rule_defs fdrd 
JOIN  fix_user_subid fus 
      ON fdrd.constraint_values LIKE '%' + REPLACE(fus.SenderSubID, '*','') + '%'
WHERE fus.SenderSubID IN ('**00390529MGERAN1**','**00912220PBALDIS**',
                          '**03994113LDAMBRO**','**04004308SLOMBAR**',
                          '**04935278CARELLI**','**4004308SLOMBARD**')

/ 這應該可以幫助您嘗試聲明一個臨時表並將所有ID存儲在其中 /

declare @tempSenderIDs Table(
    T_TableID varchar(10)
)

insert into @tempSender
(
    T_TableID
)
values
select 
    senderSubID
from
    SenderSubIDs

/ 最終結果將來自這里 /

select
    f.SenderSubIDs
from 
    fix_user_subid f
where 
    s.ConstraintValue like '%' + (select T_TableID from @tempSenderIDs) +'%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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