Запрос связанных данных, основанных на выражении «лайк» - PullRequest
2 голосов
/ 15 июля 2009

У меня есть две таблицы

Table1: Колонка А (варчар)

Table2: Колонка B (varchar)

Мне нужно получить все строки из T2, где ColumnB "похож" на любую из строк из "ColumnA%". Например, строки в T1 могут быть:

  • Summer09
  • Fall09

в то время как строки в T2 могут быть

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

В этом сценарии будет выполнено повторное выполнение строк Stat400 и CS200. Есть ли способ сделать это в одном операторе SQL?

Ответы [ 2 ]

4 голосов
/ 16 июля 2009

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 голосов
/ 16 июля 2009

этот вопрос указывает на неверный дизайн таблицы. мой хороший друг Кодд всегда говорил: не объединяйте несколько частей информации в один столбец!

t1 кулм должен быть разделен, поэтому семестр и / или год должны быть их собственным столбцом (столбцами) с FK для таблицы t2, где информация о классе может быть найдена с использованием индекса, а не медленным LIKE !! *

...