英文:
If I have multiple OR conditions in a SQL query that checks column values, how can I return the columns that met the condtion?
问题
Goods_Services_String 包含 "tokyo" 或 Input_Materials_String 包含 "tokyo" 或 Property_Plant_Equipment_String 包含 "tokyo" 或 Production_Process_String 包含 "tokyo" 或 Capital_Expenditures_String 包含 "tokyo" 或 Employee_Locations_String 包含 "tokyo" 或 Contractors_Locations_String 包含 "tokyo" 或 Research_And_Development_Desc_String 包含 "tokyo" 或 Distribution_String 包含 "tokyo" 或 Sales_And_Marketing_Desc_String 包含 "tokyo"。而不仅仅返回符合条件的行,我还想知道哪些列满足了这个条件。这可行吗?
英文:
Let's say I want to check 10 different columns to see if they contain the word "tokyo".
Goods_Services_String LIKE '%tokyo%' OR
Input_Materials_String LIKE '%tokyo%' OR
Property_Plant_Equipment_String LIKE '%tokyo%' OR
Production_Process_String LIKE '%tokyo%' OR
Capital_Expenditures_String LIKE '%tokyo%' OR
Employee_Locations_String LIKE '%tokyo%' OR
Contractors_Locations_String LIKE '%tokyo%' OR
Research_And_Development_Desc_String LIKE '%tokyo%' OR
Distribution_String LIKE '%tokyo%' OR
Sales_And_Marketing_Desc_String LIKE '%tokyo%'
But rather than just returning the row that meets this condition, I would also like to know which of the columns met this condition. Is this possible?
答案1
得分: 2
我会使用侧向连接来处理这个。例如,在 SQL Server 中,您可以这样做:
select *
from t
cross apply (values
('col 1', col1),
('col 2', col2)
) as columns(name, value)
where value like '%tokyo%'
这是一种基于集合的方法;性能可能不会很好,但使用多个 or ... like
也不是最佳选择。
英文:
I would use a lateral join for this. E.g. in SQL server you would:
select *
from t
cross apply (values
('col 1', col1),
('col 2', col2)
) as columns(name, value)
where value like '%tokyo%'
It is a set based approach; the performance won't be good but using several or ... like
isn't optimal either.
答案2
得分: 1
CASE语句是SQL处理if/then逻辑的方式。CASE语句后面至少跟随一个WHEN和THEN语句。您的SQL查询将类似于以下内容:
SELECT *,
CASE WHEN Goods_Services_String LIKE '%tokyo%' THEN 'Goods_Services_String'
WHEN Input_Materials_String LIKE '%tokyo%' THEN 'Input_Materials_String'
WHEN Property_Plant_Equipment_String LIKE '%tokyo%' THEN 'Property_Plant_Equipment_String'
WHEN Production_Process_String LIKE '%tokyo%' THEN 'Production_Process_String'
WHEN Capital_Expenditures_String LIKE '%tokyo%' THEN 'Capital_Expenditures_String'
WHEN Employee_Locations_String LIKE '%tokyo%' THEN 'Employee_Locations_String'
WHEN Contractors_Locations_String LIKE '%tokyo%' THEN 'Contractors_Locations_String'
WHEN Research_And_Development_Desc_String LIKE '%tokyo%' THEN 'Research_And_Development_Desc_String'
WHEN Distribution_String LIKE '%tokyo%' THEN 'Distribution_String'
WHEN Sales_And_Marketing_Desc_String LIKE '%tokyo%' THEN 'Sales_And_Marketing_Desc_String'
ELSE NULL END AS 'tokyo was here!'
FROM YourTableName
WHERE Goods_Services_String LIKE '%tokyo%' OR
Input_Materials_String LIKE '%tokyo%' OR
Property_Plant_Equipment_String LIKE '%tokyo%' OR
Production_Process_String LIKE '%tokyo%' OR
Capital_Expenditures_String LIKE '%tokyo%' OR
Employee_Locations_String LIKE '%tokyo%' OR
Contractors_Locations_String LIKE '%tokyo%' OR
Research_And_Development_Desc_String LIKE '%tokyo%' OR
Distribution_String LIKE '%tokyo%' OR
Sales_And_Marketing_Desc_String LIKE '%tokyo%';
英文:
The CASE statement is SQL's way of handling if/then logic. The CASE statement is followed by at least one pair of WHEN and THEN statements
Your SQL query will be like Something like this:
SELECT *,
CASE WHEN Goods_Services_String LIKE '%tokyo%' THEN 'Goods_Services_String'
WHEN Input_Materials_String LIKE '%tokyo%' THEN 'Input_Materials_String'
WHEN Property_Plant_Equipment_String LIKE '%tokyo%' THEN 'Property_Plant_Equipment_String'
WHEN Production_Process_String LIKE '%tokyo%' THEN 'Production_Process_String'
WHEN Capital_Expenditures_String LIKE '%tokyo%' THEN 'Capital_Expenditures_String'
WHEN Employee_Locations_String LIKE '%tokyo%' THEN 'Employee_Locations_String'
WHEN Contractors_Locations_String LIKE '%tokyo%' THEN 'Contractors_Locations_String'
WHEN Research_And_Development_Desc_String LIKE '%tokyo%' THEN 'Research_And_Development_Desc_String'
WHEN Distribution_String LIKE '%tokyo%' THEN 'Distribution_String'
WHEN Sales_And_Marketing_Desc_String LIKE '%tokyo%' THEN 'Sales_And_Marketing_Desc_String'
ELSE NULL END AS 'tokyo was here!'
FROM YourTableName
WHERE Goods_Services_String LIKE '%tokyo%' OR
Input_Materials_String LIKE '%tokyo%' OR
Property_Plant_Equipment_String LIKE '%tokyo%' OR
Production_Process_String LIKE '%tokyo%' OR
Capital_Expenditures_String LIKE '%tokyo%' OR
Employee_Locations_String LIKE '%tokyo%' OR
Contractors_Locations_String LIKE '%tokyo%' OR
Research_And_Development_Desc_String LIKE '%tokyo%' OR
Distribution_String LIKE '%tokyo%' OR
Sales_And_Marketing_Desc_String LIKE '%tokyo%';
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论