1. ホーム
  2. sql

[解決済み】EXISTSをビットとして直接選択することは可能ですか?

2022-04-13 15:08:42

質問

こんなことできないかなぁと(うまくいかないけど)。

select cast( (exists(select * from theTable where theColumn like 'theValue%') as bit)

できるように思えるけど、SQLで動くはずのものが動かないことが多い;) SELECT 1 where... Exists...のような回避策を見たことがありますが、exists関数の結果をビットとしてキャストすればいいような気がします。

解決方法は?

いいえ、回避策を使う必要があります。

どうしても条件ビットの0/1を返したい場合、別の方法があります。

SELECT CAST(
   CASE WHEN EXISTS(SELECT * FROM theTable where theColumn like 'theValue%') THEN 1 
   ELSE 0 
   END 
AS BIT)

キャストなしも。

SELECT
   CASE
       WHEN EXISTS( SELECT 1 FROM theTable WHERE theColumn LIKE 'theValue%' )
            THEN 1 
       ELSE 0 
   END