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

时间:2009-07-15 19:59:26

标签: sql join where-clause like-keyword

我有两张桌子

表1: ColumnA(varchar)

表2: ColumnB(varchar)

我需要从T2获取所有行,其中ColumnB与“ColumnA%”中的任何行“相似”。例如,T1中的行可能是:

  • Summer09
  • Fall09

而T2中的行可能是

  • Spring09 Com101 Sec1
  • Summer09 Stat400 Sec2
  • Fall09 CS200 Sec3

在这种情况下,它将重新调整Stat400和CS200行。有没有办法在单个SQL语句中执行此操作?

2 个答案:

答案 0 :(得分:4)


SELECT T2.*
FROM T1, T2
WHERE T1.ColumnB LIKE T2.ColumnA + '%'


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

可能不会跑得很快。

答案 1 :(得分:2)

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

t1 coulm应该被拆分,所以学期和/或年份应该是他们自己的列,其中有一个FK到t2表,其中可以使用索引找到类信息,而不是慢的LIKE !!