1

I am running this query in Snowflake SQL

SELECT field('q', 's', 'q', 'l');

However I get this error:

SQL compilation error: Unknown function FIELD

Anyway I can find the position of something in an "IN" statement?

Ideally in a statement such as:

SELECT position_of_letter_in_in_statement, letter
from my_table a
where letter in ( 'q', 's', 'q', 'l');

with the output being as so:

position_of_letter_in_in_statement | letter
1                                  | 'q'
2                                  | 's'
3                                  | 'q'
4                                  | 'l'
Michael Norman
  • 547
  • 3
  • 9
  • 20

1 Answers1

2

I don't understand the business requirement but here are two solutions.

1- Concat values in IN statement and use POSITION:

select position(letter, 'abcd'),  
letter 
from my_table  
where letter in ( 'a','b','c','d');

2- Use an ARRAY:

select ARRAY_POSITION( letter::variant, ARRAY_CONSTRUCT( 'a','b','c','d')) + 1 position_of_letter_in_in_statement,  
letter 
from my_table 
where position_of_letter_in_in_statement is NOT NULL;
Gokhan Atil
  • 9,278
  • 2
  • 11
  • 24