0

where inSQL Server 2008のステートメントにワイルドカードを使用することはできますか?

たとえば、私は現在持っています:

SELECT something  
FROM myTable  
WHERE    (ORG + '-' + ORGSUB like '5015001-________' or
          ORG + '-' + ORGSUB like '5015018-________' or 
          ORG + '-' + ORGSUB like '_______-________')

私はこのようにする必要があります:

SELECT something  
FROM myTable 
WHERE
   (ORG + '-' + ORGSUB) in( '5015001-________','5015018-________','_______-________')

これらの値を、ストアド プロシージャを介してカンマ区切りのリストとして渡します。それを成し遂げる別の方法はありますか?

4

4 に答える 4

1

ORGSUB(例で提供されているように)クエリで気にするのはなぜですか?WHEREコンポーネントを個別に検索するように句を書き直す必要があるようです。例:

SELECT something  
FROM myTable  
WHERE ORG IN (5015001, 5015018, ...) 
[add other criteria as appropriate]
于 2013-01-28T19:10:51.677 に答える
1

コンマ区切りのリストを取得して分割し、一時テーブルに挿入します...

次に、この一時テーブルに対してLIKEステートメントを使用できます。JOIN

SELECT something
FROM myTable mt
JOIN #tempTable tt
    ON mt.ORG + '-' + mt.ORGSUB LIKE tt.SearchValue
于 2013-01-28T19:10:42.550 に答える
1

なぜコンマ区切りのリストなのですか?

DECLARE TYPE dbo.OrgSub AS TABLE(s VARCHAR(32));
GO
CREATE PROCEDURE dbo.SearchOrgSubs
  @OrgSub dbo.OrgSub READONLY
AS
BEGIN
  SET NOCOUNT ON;

  SELECT t.something 
    FROM dbo.mytable AS t
    INNER JOIN @OrgSub AS o
    ON t.ORG + '-' + t.ORGSUB = o.s;
END
GO

これで、最初にコンマ区切りのリストを作成しなくても、C# などからストアド プロシージャにセットを渡すことができます。

于 2013-01-28T19:16:01.767 に答える
0

関数の結果を含む一時テーブルを作成できますsplit

SELECT somthing 
from myTable  
    JOIN dbo.Split('5015001-________','5015018-________','_______-________') as Splits 
    on (ORG + '-' + ORGSUB) like Splits.items
于 2013-01-28T19:15:55.970 に答える