iAlexander |
Отправлено: 31.08.2004, 13:45 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Позволяет ли SQL построить выражение, которое объединит данные (текстовые) из нескольких записей одного поля для рассмотрения их как единой фразы?
Вопрос вызван следующей проблемой: в таблице необходимо хранить тексты соглашений, длина которых может быть произвольной (от 0 до x000 символов). Нелогично выделять max[x]000 символов под каждое соглашение, поэтому планируется реализовать следующий вариант:
установить приемлемую длину (100 символов, к примеру) для поля, и затем каждое соглашение разбивать на блоки по 100 символов. Т.о. таблица имеет вид:
CODE |
AGRIndex | AGRNumAgreement | AGRPartNum | AGRText
........ | ............... | .......... | .......
AGRIndex — Autoinc
AGRNumAgreement — номер соглашения
AGRPartNum — номер блока
AGRText — текст блока
|
А вопрос возникает, потому что необходимо будет осуществлять поиск по БД, используя тексты. Как вы понимаете, без полного, объединенного текста полноценный поиск невозможен.
Желаемое: нечто вроде
CODE |
SELECT ... LIKE "обеспечение информационнной безопасности"
|
Существует ли способ объединить блоки? |
|
AVC |
Отправлено: 31.08.2004, 14:08 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE | Позволяет ли SQL построить выражение, которое объединит данные (текстовые) из нескольких записей одного поля для рассмотрения их как единой фразы?
|
Простой Select не позволяет. Мне известны решения с помощью SP или встроенных функций.
Тип varchar позволяет хранить столько данных, сколько реально необходимо. Но он в некоторых СУБД имеет ограничение на максимальную длину строки.
Тип Memo (Long, CLob, Lob) это именно то, что вам надо. Но по нему иногда бывает неудобно искать.
В Sybase я бы воспользовался varchar'ом в Oracle CLob'ом.
Про свой вариант лучше забудьте. Это идет в разрез с концепцией SQL и будет вызывать головную боль в дальнейшем. |
|
iAlexander |
Отправлено: 31.08.2004, 15:01 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
AVC
То есть Memo не накладывает ограничений на размер хранимой записи? Это очень хорошо.
VarChar — нельзя, тут Paradox...
Насчет забыть — очень жаль, такую схему красивую спроектировал. Но видимо, придется...
Спасибо.
А в каких случаях неудобно искать? Можно сразу предостеречь меня от неправильных действий? |
|
avc* |
Отправлено: 31.08.2004, 15:18 |
|
Не зарегистрирован
|
Предпологалось, что речь идет об SQL'евском сервере. При использовании Memo в предикате Where надо вставлять специальные функции, осуществляющие поиск в Memo.
Уточните у парадокса или может знатоки Paradox'а вам помогут. |
|