2016-04-15 12 views
0

私はwhere節に簡単な文を書こうとしていますが、構文が正しいとは思いません。クエリは、これらのIDがこの列にあるかどうか検索しますが、同じ行にINを2回使用できるかどうかわかりません。誰かが何らかのフィードバックを提供してもらえますか?ありがとう![WHERE、IN、LEN、IN] TSQLを使用

WHERE... AND (tableA.ColumnA in LEN(LTRIM(RTRIM(TableB.ColumnB))) in (5,7)) 

私は2番目のINの近くにいくつかの構文エラーを取得していますし、これはこれにアプローチするための正しい方法であるかどうかを把握することはできませんか?

+0

'LEN(LTRIM(RTRIM(TableB.ColumnB)))'の目的は何である結合を使用して? 「これらのIDがこの列にあるかどうか」と言うとき、どの列を意味しますか? –

+0

私は両方の列の空白をトリミングしています。私はカラムAのカラムAにIDを持っています。したがって、このWhere句のポイントは、ユーザがメインのPersonパラメータを選択すると、そのクエリは自分のFinancialテーブルで検索され、(そのPersonに関連付けられた)主要なビジネステーブルにもあります。本質的には、 'tableA.columnA in tableb.columnB'です。しかし、私は5文字と7文字のIDがほしいです。これが明確になるのに役立ちますか? – Geo

答えて

2

あなたが列で使用する場合、それは(ウェスのサブ選択がまだ同じ構文エラーがあります)、サブ選択する必要がありますが、ここでは、あなたがそれを行うことができ、正しい方法である:

WHERE... AND (tableA.ColumnA in (
SELECT ColumnB FROM TableB WHERE LEN(LTRIM(RTRIM(TableB.ColumnB))) in (5,7) 
)) 
+0

そうそう、もちろんI今日は少しばかげている。 –

1

代わりにサブクエリを使用してみてください。

WHERE... AND (SELECT TA.ColumnA 
       FROM TableA TA 
       WHERE TA.ColumnA IN LEN(LTRIM(RTRIM(TABLEB.ColumnB))) IN (5,7) 
+0

私はこれを試しましたが、私は同じエラーを受けたと信じています。ここでは、私のコードは、2番目の 'in'によってエラーが発生したように見えます。 "不適切な構文で」近い":/ 'と \t \t \t(mainfilters.RPCO IN(LEN(LTRIM(RTRIM(ABC6.CU)))IN(5,7)))' – Geo

0

join TableB 
    on TableB.ColumnB = tableA.ColumnA 
    and LEN(LTRIM(RTRIM(TableB.ColumnB))) in (5,7)