C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Запрос на объединение значений записей в текстовом, Объединить несколько записей в единое це
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'а вам помогут.

Вернуться в Работа с базами данных в C++Builder