SQL Query:将多个字符串类型的列连接在一起

ade*_*bal 4 sql

假设我的表包含以下列

 Roll_number numeric           not null
 Subject1    varchar(40)       null
 Subject2    varchar(40)       null
 . . .
 Subject8    varchar(40)       null
Run Code Online (Sandbox Code Playgroud)

我必须使用SQL Query搜索所有这些subject1到8中的主题.在所有这些列中搜索子字符串的最佳查询是什么,请记住其中任何一个都可以具有NULL值.

我写

select * 
from students_data 
where subject1="BIOLOGY" or subject2="BIOLOGY" . . . . or subject8="BIOLOGY" 
Run Code Online (Sandbox Code Playgroud)

但我需要一个简单的查询,因为实际上我的表中有超过20列

查询

select * from table1 where "BIOLOGY" in (subject1,subject2,subject3)
Run Code Online (Sandbox Code Playgroud)

很有帮助,但如果我必须匹配该表字段中的
"BIO"之类的子字符串(该主题的一部分)

Mah*_*mal 5

您可以IN像这样使用谓词:

SELECT * 
FROM students_data 
WHERE 'BIOLOGY' IN (subject1, subject2, . . . , subject8);
Run Code Online (Sandbox Code Playgroud)