2017-07-18 14 views
-3

私は2つのテーブルを持っています。SQL Serverで2つのテーブルを結合する方法は?

表1は、このような値が含まれているFilename列を持っています

AV_SDBT_NonPay_SXM_PRE15_INV_20170712_results_20170716.txt 
data_20170715.dat.zip.pgp 
demo_20170715.dat.zip.pgp 
gm_SiriusXM_COI_Export_20170715000255.dat.gz.pgp 
gm_SiriusXM_COI_Export_20170716000247.dat.gz.pgp 
gm_unsubs_20170715.dat.gz.pgp 
IBS_Number_Skill_Assignment-en-us_2017-07-16T020008476Z.csv 
IGN_Action_Det_20170716.txt 

、表2は、このデータが含まれているFile_Frmt列を持っています

gm_SiriusXM_COI_Export*.pgp 
Contest_Sweeps* 
fiddemo* 
IWCO_SXM_EST_IN_HOME*.gpg 
demo*.pgp 
IWCO_IWCO*Processed*.gpg 
*SDBT_NonPay* 

は、これら二つを一致させる方法はありますFilenameFile_frmtのテーブル?

filenamefile_frmtが含まれている場合は、一致する一致しません。

答えて

0

INNER JOINLIKEREPLACEとなります。

作成し、移入したサンプルテーブル(私たちのセーブくださいあなたの将来の質問では、このステップ):

DECLARE @T1 as TABLE 
(
    Filename nvarchar(100) 
) 

INSERT INTO @T1 VALUES 
('AV_SDBT_NonPay_SXM_PRE15_INV_20170712_results_20170716.txt'), 
('data_20170715.dat.zip.pgp'), 
('demo_20170715.dat.zip.pgp'), 
('gm_SiriusXM_COI_Export_20170715000255.dat.gz.pgp'), 
('gm_SiriusXM_COI_Export_20170716000247.dat.gz.pgp'), 
('gm_unsubs_20170715.dat.gz.pgp'), 
('IBS_Number_Skill_Assignment-en-us_2017-07-16T020008476Z.csv'), 
('IGN_Action_Det_20170716.txt') 


DECLARE @T2 as TABLE 
(
    File_Frmt nvarchar(100) 
) 
INSERT INTO @T2 VALUES 
('gm_SiriusXM_COI_Export*.pgp'), 
('Contest_Sweeps*'), 
('fiddemo*'), 
('IWCO_SXM_EST_IN_HOME*.gpg'), 
('demo*.pgp'), 
('IWCO_IWCO*Processed*.gpg'), 
('*SDBT_NonPay*') 

クエリ:

SELECT t1.* 
FROM @T1 as t1 
INNER JOIN @T2 as t2 ON t1.FileName LIKE REPLACE(t2.File_Frmt, '*', '%') 

結果:

Filename 
gm_SiriusXM_COI_Export_20170715000255.dat.gz.pgp 
gm_SiriusXM_COI_Export_20170716000247.dat.gz.pgp 
demo_20170715.dat.zip.pgp 
AV_SDBT_NonPay_SXM_PRE15_INV_20170712_results_20170716.txt 

See a live demo on rextester.

file_Frmtには、?も含まれています(マイクロソフトの検索パターンのように)1つの文字のプレースホルダとして_に置き換えることができます。

関連する問題