我在编写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是否有不同的,更简单或更好的方法?
由于
答案 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'
很大程度上取决于你在做什么,如果你这么做很多,每一列都以一个两个字符的代码开头,那么你可能想把这个值拆分成它自己的列。