代码之家  ›  专栏  ›  技术社区  ›  Jason

基于“like”语句查询相关数据

  •  2
  • Jason  · 技术社区  · 15 年前

    我有两张桌子

    表1: 第A列(varchar)

    表2: B列(varchar)

    我需要从t2中得到所有的行,其中columnb“类似”columna%中的任何一行。例如,T1中的行可能是:

    • 夏季09
    • FAL09

    t2中的行可能是

    • Spring09 Com101第1部分
    • 夏季09阶段400秒2
    • Fall09 CS200第3秒

    在这种情况下,它将重新运行stat400和cs200行。在单个SQL语句中是否有这样的方法?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Matthew Groves    15 年前
    
    SELECT T2.*
    FROM T1, T2
    WHERE T1.ColumnB LIKE T2.ColumnA + '%'
    

    
    SELECT T2.*
    FROM T1
    INNER JOIN T2 ON T1.ColumnB LIKE T2.ColumnA + '%'
    

    可能不会跑得很快。

        2
  •  2
  •   KM.    15 年前

    这个问题指出了一个糟糕的表设计。 我的好朋友Codd总是说:不要将多个信息组合成一个列!

    T1 coulm应该被拆分,所以学期和/或年份应该是它们自己的列,在t2表中有一个fks,在这个表中可以使用索引找到班级信息,而不是像这样的慢!你说什么?