2017-02-17 6 views
0

を選択し、たとえば、異なる長さでPROJECTNUMBERSのリスト(テーブル)を持つ:SQLが存在し、部分的に

123 
1254 
25-135 

その後、私は有効と無効値でDRAWINGNUMBERSの(ロング)リスト(テーブル)を持っています。

有効

valid: 
123-78787 
123-78799 
25-135.115-15 
25-135-511 


invalid 
1841 
Anything else 

が、私はいつもにexect ... EXISTかのように、これは成功しない

select * from DRAWINGNUMBERS where exit ??? PROJECTNUMBER 

を使用しようと、Projectnumber(上記参照)で始まるものです値を見つける。
しかし、私はLEFT(..)を使うことはできません。なぜなら、PROJECTNUMBERSの長さが違うからです。

質問:
有効な図番号の選択方法はありますか。

+0

「EXIT」はどこから取得しましたか? – Siyual

+1

SQLServer/mysql/oracleのように使用しているDBMSにタグを付けることができますか? – TheGameiswar

+0

MS SQL Server 2014 – Volker

答えて

1

典型的な方法はexistまたはjoinです。ここでは一つの方法である:

select d.*, 
     (case when exists (select 1 
          from projects p 
          where d.drawingnumber like concat(p.projectnumber, '%') 
         ) 
      then 1 else 0 
     end) as validFlag 
from drawings d; 

2つのプロジェクトは、同図に一致する可能性があるので、私はexistsを好みます。 。 。 "12"と "123"と言ってください。 joinは複数の行を生成します。

すべてのデータベースがconcat()機能をサポートしているわけではありません。 。 。データベースによっては+または||または&を使用できます。

関連する問題