2011-03-09 23 views
1

いこの作品SQL LIKE条件

SELECT color 
FROM rawdata 
WHERE color LIKE (
    SELECT TOP 1 color_condition 
    FROM rules 
    WHERE rules_id=1 
) 

ような何かルール1のcolor_conditionがB%が、これは生データcolor = 'Blue'からエントリを返しますでしょうか?

答えて

1

はい。

少なくともSQL Serverでそれはありません、あなたがTOP

WITH rawdata(color) As 
(
SELECT 'Blue' UNION ALL SELECT 'Red' 
), rules(color_condition,rules_id) AS 
(
SELECT 'B%',1 
) 
SELECT color FROM rawdata 
WHERE color LIKE (SELECT TOP 1 color_condition 
        FROM rules WHERE rules_id=1) 

戻り

color 
----- 
Blue 
+0

ありがとうございます。テストするSQL Serverはありません。まだダウンロードしています。 – Cilvic

+1

@Cilvic - BTWあなたは[私の答えの中の1つのような]いくつかの特別なクエリをテストすることができます(http://data.stackexchange.com/stackoverflow/q/94831/)[http://data.stackexchange.com/stackoverflow /query/new](http://data.stackexchange.com/stackoverflow/query/new) –

0

からの質問への答えは「イエス」であることを利用しているように見えますが、私はかしらそれはあなたの疑いの原因となっているあなたの特定のSQL構造です。個人的には、サブクエリで中断された述語が見えない方が好きです。これを読むのが簡単かどうかを確認してください。

SELECT D1.color 
    FROM rawdata AS D1 
WHERE EXISTS (
       SELECT * 
       FROM rules AS R1 
       WHERE D1.color LIKE R1.color_condition 
         AND R1.rules_id = 1 
      );