I have a table that has columns like this for example:
id,col1,col2,col3,col4   Now, I want to check if ANY of col1, col2, col3, col4 have the passed in value.
The long way to do it would be..
SELECT * FROM table WHERE (col1 = 123 OR col2 = 123 OR col3 = 123 OR col4 = 123);   I guess it's the opposite version of IN.
Is there an easier way to do what I want?
In SQL, problems require us to compare two columns for equality to achieve certain desired results. This can be achieved through the use of the =(equal to) operator between 2 columns names to be compared.
You can use the MATCH() function to check if the values in column A also exist in column B. MATCH() returns the position of a cell in a row or column. The syntax for MATCH() is =MATCH(lookup_value, lookup_array, [match_type]) . Using MATCH, you can look up a value both horizontally and vertically.
Note – Use of IN for matching multiple values i.e. TOYOTA and HONDA in the same column i.e. COMPANY. Syntax: SELECT * FROM TABLE_NAME WHERE COLUMN_NAME IN (MATCHING_VALUE1,MATCHING_VALUE2);
The long way to do it would be.. SELECT * FROM table WHERE (col1 = 123 OR col2 = 123 OR col3 = 123 OR col4 = 123);
You can use the IN predicate, like so:
SELECT * FROM table WHERE 123 IN(col1, col2, col3, col4);   it's the opposite version of IN.
No it is not, It is the same as using the ORs the way you did in your question.
The predicate IN or set membership is defined as1:

Where the Value Expression can be either 2:

So it is fine to do it this way, using the value expression 123, which is a literal.
1, 2: Images from: SQL Queries for Mere Mortals(R): A Hands-On Guide to Data Manipulation in SQL
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With