1

IN一重引用符を使用した句で値を選択できません。pidコラムはvarchar(50).

select * from t_tra_main where pid in (200000002,300000394,200000004,
    200000001,300000378,300000393,300000379,200000003)

select * from t_tra_main where pid in ('200000002','300000394','200000004',
    '200000001','300000378','300000393','300000379','200000003')

最初のクエリはデータを返しますが、2 番目のクエリはデータを返しません。

4

1 に答える 1

1

ちょっとした実験ですが、表の値の先頭にスペースまたはゼロがあると思います。

OP の場合、次のクエリを実行してこれをテストできます。

select *
from t_tra_main
where left(pid) in (' ', '0');

SQL フィドルはこちらです。コードは次のとおりです。

create table t_tra_main (
  id int identity(1, 1),
  pid varchar(50)
);

insert into t_tra_main(pid)
    select '200000002' union all
    select '0300000394' union all
    select '0200000004' union all
    select ' 200000001' union all
    select ' 300000378' union all
    select '300000393 ' union all
    select '300000379 ' union all
    select '200000003';

select * from t_tra_main where pid in (200000002,300000394,200000004,
    200000001,300000378,300000393,300000379,200000003)

select * from t_tra_main where pid in ('200000002','300000394','200000004',
    '200000001','300000378','300000393','300000379','200000003')
于 2013-05-11T20:26:52.713 に答える