新規動作していないと私はそれがすべてで...ないの構文エラー働いていないORステートメントは、SQLServerのために
select *
from table1
where field1 IN ('textvalue1','textvalue2') OR field2 IN ('textvalue1','textvalue2')
のようなものをやっているとAND
ステートメントが正常に動作します。 括弧で囲んでみました。
新規動作していないと私はそれがすべてで...ないの構文エラー働いていないORステートメントは、SQLServerのために
select *
from table1
where field1 IN ('textvalue1','textvalue2') OR field2 IN ('textvalue1','textvalue2')
のようなものをやっているとAND
ステートメントが正常に動作します。 括弧で囲んでみました。
すべてのコメントによれば、自分が思うと思うデータの値を持つことはできません。これは再現可能な例です。
declare @table table (field1 varchar(64), field2 varchar(64))
insert into @table
values
('a','b'),
('c','d'),
('e','f'), --only row that won't return with logic below
('g','h'),
('i','j')
select *
from @table
where field1 in ('a','c') or field2 in ('h','j')
RETURNS NOTE、SQL Serverの
+--------+--------+
| field1 | field2 |
+--------+--------+
| a | b |
| c | d |
| g | h |
| i | j |
+--------+--------+
は、等価演算子のための末尾のスペースを無視しますが、先頭のスペースは失敗します。したがって、あなたが先導スペースを持っている場合LTRIM()
を使用する必要があります。
declare @table table (field1 varchar(64), field2 varchar(64))
insert into @table
values
('a ','b'),
('c ','d'),
('e ','f'),
('g',' h'),
('i',' j')
select *
from @table
where ltrim(field1) in ('a','c') or ltrim(field2) in ('h','j')
あなたはその後、「YYY」を使用するか、内側のクエリを使用してフェッチされている場合は下記のようにIN句内のサブクエリを渡す変数として名前を渡しているのどちらか。
SELECT *
FROM PERSON
WHERE NAME IN ('jill') OR NAME IN (SELECT NAME FROM PERSON WHERE NAME ='jake');
使用http://rextester.com/l/sql_server_online_compilerとコードを書いて、それとセットアップいくつかのサンプルデータをリンク... – JGFMK
'list'は何ですか?これは変数かサブクエリか、またはカンマ区切りの値ですか? – scsimon
サンプルデータと必要な結果を共有する必要があります。あなたのSQL文を見て、あなたに伝えることができるのは、それが実行されるということだけですが、あなたはすでにそれを知っています。 – JNevill