2017-11-23 4 views
0

I表(カレンダー)を持っているSQL Serverのワイルドカード発行

Date      Remark 
2010-01-01    Sunday 
2010-02-01    Saturday 
2010-03-01    Public Holiday 
2010-03-01    Rose Day 
2010-04-01    Valentines day 
2010-04-01    Public Holiday 
2010-01-01    Sunday 
2010-02-01    Saturday 

は私が土曜日と日曜日を持っていないだけで、これらの日付を選択します。

SELECT * FROM CALANDER WHERE REMARK NOT LIKE 'SATURDAY' OR Remark Not like 'Sunday' 

私はこのクエリを実行していますが、これは私を助けません。しかし、より効率的だ知らん

+0

あなたは、SQL Serverを言うので、なぜあなたはMySQLをタグ付け? – Sami

+0

完全一致または 'NOT IN'句のように、'!= 'や' <> 'を使用するのはなぜですか? – SMA

+0

ワイルドカードのない「LIKE」はあまり意味がありません。 '<>' – jarlh

答えて

1

あなたは

SELECT * FROM Calendar WHERE REMARK NOT IN('Saturday', 'Sunday') 
0

これはおそらく、あまりにもJOINのように書くことができで使用できる、:

SELECT * 
FROM CALANDER 
WHERE Date NOT IN (
    SELECT DISTINCT Date 
    FROM CALANDER 
    WHERE Remark IN ('Saturday', 'Sunday') 
) 
0

さて、あなたは正規表現(ワイルドカードで動作するようにしたい場合)この方法に従うべきです:

日曜日と土曜日はSで始まる唯一の日なので、あなたのワイルドカードは見えるはずです以下のようなクエリで'S%day'、:

SELECT * FROM Calendar WHERE REMARK LIKE 'S%day' 
0

だけANDの代わりORを使用します。

CREATE TABLE MyDates (
    [Date] DATE, 
    Remark NVARCHAR(50) 
    ); 
INSERT INTO MyDates VALUES 
('2010-01-01',    'Sunday'), 
('2010-02-01',    'Saturday'), 
('2010-03-01',    'Public Holiday'), 
('2010-03-01',    'Rose Day'), 
('2010-04-01',    'Valentines day'), 
('2010-04-01',    'Public Holiday'), 
('2010-01-01',    'Sunday'), 
('2010-02-01',    'Saturday'); 

SELECT * 
FROM MyDates 
WHERE Remark NOT LIKE 'SATURDAY' AND Remark Not like 'Sunday'; 

結果:

+---------------------+----------------+ 
|  Date   |  Remark  | 
+---------------------+----------------+ 
| 01.03.2010 00:00:00 | Public Holiday | 
| 01.03.2010 00:00:00 | Rose Day  | 
| 01.04.2010 00:00:00 | Valentines day | 
| 01.04.2010 00:00:00 | Public Holiday | 
+---------------------+----------------+ 

アウトdemo

0

あなたの状態はORではなくANDでなければなりません。

また、ワイルドカードを使用する場合は、任意の文字のワイルドカードは%です。クエリの

これらの小さな変更は、すべての行がその備考欄の一環として、土曜日と日曜日を持っていないが返されます:

SELECT * FROM CALANDER WHERE REMARK NOT LIKE '%Saturday%' AND Remark Not like '%Sunday%'