2016-09-12 9 views
0

下記の質問で私を助けてください。文字列が 'G'または 'F'で始まっているかどうかチェックしたいのですが、既存の条件と一緒に条件を調べてみたい。ここでは、クエリチェック文字列は特定の文字で始まります

最初のクエリは、次のとおりです。 -

SELECT Top 1 LC_ID, ISNULL(LC_UD, 0) as Record 
FROM CONTRACT 
WHERE LC_ID = 'F01' 

出力

F01 | 1 (if available) else no record will be return. 

2番目のクエリ:

私はそのようであればそこに一つにクエリの両方を統合することができますどのように
IF LC_ID starts with 'F%' or 'G%' 

'F01'の値のレコードがない場合、LC_IDがFで始まるかどうかを確認します& G返す 出力

F04 | 1 

他のレコードは返されません。

+1

構文に基づいて、私はあなたがSQL Serverを使用していると仮定します。実際に使用しているデータベースで質問にタグを付ける必要があります。 –

答えて

2

返される値の優先順位を設定します。あなたは一つだけにしたいので、あなたがORDER BYでこれを行うことができます。

SELECT Top 1 LC_ID, COALESCE(LC_UD, 0) as Record 
FROM CONTRACT 
WHERE LC_ID LIKE '[FG]%' 
ORDER BY (CASE WHEN LC_ID = 'F01' THEN 1 ELSE 2 END); 

注:これは、あなたが(構文に基づいて)SQL Serverを使用していることを前提とします。

+0

はい、SQLサーバー – kiran

+0

@kiranを使用しています。 。 。その情報は質問のタグに属します。私はちょうどそれを追加した。 –

0

@ gordonの回答は賢明ですが、おそらくSql Server固有のものです。ここでは別のアプローチがあります。 「トップ1」機能はSQL Serverでもありますが、追加の手法で回避できます。

SELECT Top 1 LC_ID, ISNULL(LC_UD, 0) as Record 
FROM CONTRACT 
WHERE LC_ID = 'F01' 
UNION 
SELECT Top 1 LC_ID, ISNULL(LC_UD,0) As Record 
FROM CONTRACT 
WHERE NOT EXISTS (SELECT * FROM CONTRACT WHERE LC_ID = 'F01') 
AND LC_ID LIKE '[FG]%' 
関連する問題