2016-08-25 21 views
2

演算子を引数のリストの最初の引数の位置(インデックス)をINとすることは可能ですか? postgresの中SQL-IN演算子取得位置

SELECT 2 IN(2, 3, 1); -- Result I want is 0 but with IN is true 
SELECT 3 IN(2, 3, 1); -- Result I want is 1 but with IN is true 
SELECT 0 IN(2, 3, 1); -- Result I want is -1 but with IN is false 
SELECT 1 IN(1, 1, 3); -- RESULT I WANT IS 0 ,1 but with IN is true 
+3

答えはNOです。 – jarlh

+1

なぜこれが必要ですか?これは奇妙な要求です –

+0

INは値がリストにあるかどうかを選択するインデックス演算子ではありません。 – Linkan

答えて

5

"plai IN句n」は、しかし、あなたは、配列とアンネスト機能でこれを行うことができます:検索する値が配列されていない場合は、あなたがまったく行を取得しません

select t.idx 
from unnest(array[2,3,1]) with ordinality t(v,idx) 
where t.v = 2; 

select t.idx 
from unnest(array[1, 1, 3]) with ordinality t(v,idx) 
where t.v = 1; 

3

は便利な機能POSITIONは、文字列 例では最初のインデックスを返すことができます:

select position('2' in '2,3,1,2') // return 1 
+1

そして、最初の項目として22がリストに追加されていれば? – jarlh

1

することができますSQL Serverで

私が探している結果は、次のようなものですCHARINDEXを使用してください。

DECLARE @string VARCHAR(10)='22,3,1,2' 
DECLARE @searchkey VARCHAR(10)='2' 

select CHARINDEX(','[email protected]+',',' ,'+ @string+',')-1 
+0

そして、最初の項目として22がリストに追加されていれば? – jarlh

関連する問題