使用like运算符对多个字段的SQL查询是否可以用不同的方式写

时间:2010-02-19 17:56:32

标签: sql

我在编写SQL方面没有太多经验,所以这可能是一个相当简单的问题但是现在我有一个SQL查询需要在多个字段上做'喜欢',目前我这样做:

select * 
from tableX  
where col1 like '10%' 
   or col2 like '10%' 
   or col3 like '10%'  
   or col4 like '10%'  
   or col5 like '10%'  
   or col6 like '10%' 

编写SQL是否有不同的,更简单或更好的方法?

由于

2 个答案:

答案 0 :(得分:2)

select * from tableX where col1 like '10%'
UNION
select * from tableX where col2 like '10%'
UNION
select * from tableX where col3 like '10%'
...

如果您将一个col与多个值进行比较,则还有其他选项,例如

SELECT *
FROM
   tableX t1
   JOIN
   tableFilter TF ON t1.col LIKE TF.FilterValue

答案 1 :(得分:0)

更好的意思是更快?

我希望以下内容可能更快,但sql可能已经对它进行了优化:

select * 
from tableX  
where substring(col1,0,2) = '10' 
   or substring(col2,0,2) = '10' 
   or substring(col3,0,2) = '10' 
   or substring(col4,0,2) = '10' 
   or substring(col5,0,2) = '10' 
   or substring(col6,0,2) = '10' 

很大程度上取决于你在做什么,如果你这么做很多,每一列都以一个两个字符的代码开头,那么你可能想把这个值拆分成它自己的列。