代码之家  ›  专栏  ›  技术社区  ›  Gern Blanston

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

sql
  •  1
  • Gern Blanston  · 技术社区  · 14 年前

    我在编写SQL方面没有太多经验,所以这可能是一个非常简单的问题,但现在我有一个SQL查询,需要在多个字段上执行“like”,目前我执行以下操作:

    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 回复  |  直到 14 年前
        1
  •  2
  •   gbn    14 年前
    select * from tableX where col1 like '10%'
    UNION
    select * from tableX where col2 like '10%'
    UNION
    select * from tableX where col3 like '10%'
    ...
    

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

    SELECT *
    FROM
       tableX t1
       JOIN
       tableFilter TF ON t1.col LIKE TF.FilterValue
    
        2
  •  0
  •   Hogan    14 年前

    你说的更好是指更快吗?

    我预计以下内容可能更快,但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' 
    

    很大程度上取决于您在做什么,如果您经常这样做,并且每列都以两个字符的代码开头,那么您可能希望将该值拆分为自己的列。