sql "диапазоны" и подстановочные знаки - PullRequest
2 голосов
/ 22 августа 2009

Завершите sql noob здесь.

Попытка придумать способ сохранить некоторые данные в таблице, которая выглядит примерно так:

"0-15", "низкий", "1-3"

"45-50", "мед", "*"

"*", "*", "1000"

где столбцы 1 и 3 - это диапазоны целых чисел, а столбец 2 - это перечислимый тип (может храниться как угодно).

Я хочу иметь возможность вставлять в таблицу символы подстановки, чтобы уменьшить количество строк, при этом ничего не пропуская.

Исходя из того, что я понимаю, столбцы 1 и 3 лучше всего хранить в виде двух столбцов целых чисел каждый, с -INT_MAX по INT_MAX или как-нибудь подстановочным знаком (выберите bla из bla, где col1.1> val и col1.2

это разумная стратегия?

столбец 2 кажется более хитрым, выберите bla из bla, где col2 = 'med' или col2 = '*' не кажется правильным. я мог бы сделать это численно, как 1 и 3, но не хотел бы

Кто-нибудь хочет меня просветить?

Ответы [ 2 ]

3 голосов
/ 22 августа 2009

Я бы предпочел использовать NULL в качестве подстановочного знака, поскольку он будет выделяться любому человеку, изучающему базу данных. В этом случае каждый элемент ваших WHERE предложений будет выглядеть примерно так:

WHERE (77777 > min_value OR min_value IS NULL)
  AND (77777 < max_value OR max_value IS NULL)
  AND (col2 = 'med' OR col2 IS NULL)

Это та же базовая идея *, что и раньше, но с использованием значения, которое SQL распознает как отличное от обычных значений.

1 голос
/ 22 августа 2009

Принимая во внимание SQL, естественным будет использование NULL в качестве значения группового символа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...