2009-08-04 12 views
0

私は約6つのフィールドを持つテーブルがあります。国のフィールドに "England"を持たないすべてのレコードを返すSQLステートメントを書きたいと思っています。コメントフィールドの言語フィールド&英語に英語を書いています。SQLクエリの質問

SQLクエリはどのようなものでしょうか?

+0

あなたはそれを持っていないフィールドのいずれかでそれを持っていないレコード、またはレコードを意味しますか3つのフィールドのうちの少なくとも1つ?また、フィールドが指定された文字列と正確に同じであってはならないか、指定された文字列を含んではいけませんか? – Amber

+1

テーブル構造、レイアウト、サンプルデータを転記できますか? –

+0

には、これらの文字列を含めることはできません (countryフィールドに "England"は含まれていてはいけません。言語フィールドに "english"を含めることはできず、commentsフィールドに "english"を含めることはできません) – Frank

答えて

1

これでスタートし、必要に応じて修正します。

SELECT * 
FROM SixFieldTable 
WHERE Country <> 'England' 
AND language <> 'english' 
AND comments NOT LIKE '%english%' 

は、この情報がお役に立てば幸いです。

+0

ありがとうございます。 ANDキーワードまたはORキーワードを使用すべきかどうかわかりません ORキーワードは何を使用しますか? – Frank

+2

おそらくブール論理の接地が役立つだろう。 http://en.wikipedia.org/wiki/Boolean_logic –

+0

残念ながら、このコメントの要件は次のとおりです。(国名に "England"を含めてはいけません。言語フィールドに "english"を含めてはいけません。コメント欄に英語を入力してください)。大文字の「英語」はどうですか?マイクの答えは、あなたが正確にイングランドの国と言語の英語に一致するようにしたい場合にのみ機能します。国の価値が北イングランドの場合はどうなりますか? –

1

あなたは 『ない』比較

select * from myTableOfMadness 
where country <> 'England' 
and language <> 'English' 
and comments not like '%english%' 

したい「とのか」場合はわからないかの、またはすべてのようなものに欠けています。あなたの文構造はやや誤解を招きます。

3

あなたの質問は、あなたが使用しているDBMSとあなたのテーブルがどのように見えるかによって大きく異なります。

SELECT * 
FROM tbl 
WHERE country NOT LIKE '%England%' AND language NOT LIKE '%english%' 
    AND comments NOT LIKE '%english%'; 

上記のクエリは、方法だろう、その場合には、あなたの質問は、それは大量のテキストが含まれている可能性があり、これらすべての分野のような音になり方法あなたの単語を、これは一つの方法は、MySQLやTSQLでそれを行うことであろう行く。しかし、より多くのあなたが本当のデータベースに完全一致を探していると思いませんよりも可能性:

SELECT * 
FROM tbl 
WHERE country!='England' AND language!='english' 
    AND comments NOT LIKE '%english%'; 
+0

zombatが、あなたはおそらく、私はあなたが言語を意味疑う、あなたの第二の例を編集したい!=「%英語%」(偶然に含ま% 『英語の?) – Amber

+0

@Dav、%前後に任意の文字を一致させるためです』。そう、はい、必要です。 – Dirk

+0

@Dav - うん、いいキャッチ。私はあなたのコメントを見た直前にそれを見ました。ありがとう。 :) – zombat

0

上記の解決策は、列にNULL値可能性を考慮するためには表示されません。この

Select * From table 
Where Country Not Like '%England%' 
And Language Not Like '%English%' 
And comments Not Like '%English%' 
1

を試してみてください。

Where country <> 'England' 

などの既定のSQL Server接続設定では、国がnullのエントリは誤って除外されます。

代わりに、あなたはケースを無視するには

IsNull(Country, '') <> 'England' 
1

を使用して試みることができる:

SELECT * 
FROM SixFieldTable 
WHERE LOWER(Country) <> 'england' AND 
LOWER(language) <> 'english' AND 
LOWER(comments) NOT LIKE '%english%'