Оптимальное хранение данных в БД

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Справка.

Код: Выделить всё

Main.SQLQuery1.SQL.Text := 'SELECT * FROM PACIENTS WHERE LASTNAME LIKE ''Rob%'';
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

wwswowsogon писал(а):

Код: Выделить всё

Main.SQLQuery1.SQL.Text := 'SELECT * FROM PACIENTS WHERE LASTNAME LIKE ''Rob'';
- а это - нет.
Да, Firebird 2.5.

Для строк которые начинаются с Rob

Код: Выделить всё

Main.SQLQuery1.SQL.Text := 'SELECT * FROM PACIENTS WHERE LASTNAME LIKE ''Rob%'';

или вхождение Rob в любом месте строк

Код: Выделить всё

Main.SQLQuery1.SQL.Text := 'SELECT * FROM PACIENTS WHERE LASTNAME LIKE ''%Rob%'';
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

%Rob%
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

wwswowsogon писал(а): LIKE ''Rob''


LIKE 'Rob%'
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

Сообщение wwswowsogon »

Спасибо всем за ответы, справку я читал, да... :)
И пробовал не разу уже и LIKE 'Rob%' и LIKE '%ob%', и LIKE '%r%', результат один, т.е. нулевой. :)
Попробую ещё вечером на другой, тестовой базе, мб опять словил глюк в проекте.
Кстати, а правильно я понял ,что для Firebird использование '%' обязательно? В MS SQL вроде бы можно писать просто LIKE LIKE 'Rob'. Так?
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Сообщение wofs »

wwswowsogon писал(а):И пробовал не разу уже и LIKE 'Rob%' и LIKE '%ob%', и LIKE '%r%', результат один, т.е. нулевой. :)

а регистр соблюден?
И у вас закрывающей кавычки в примере не хватает.
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

Сообщение wwswowsogon »

С регистром всё в порядке :)) Таки работает именно LIKE '%%'. Спасибо!
Похоже, не из того поля выборку делал, а если из того, тоо без %% .
Внимательность важна весьма. ;)
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

wwswowsogon писал(а):Запрос возвращает данные только, если написано LIKE 'Robert', по принципу вхождения подстроки результат пустой почему-то, соответственно, весь смысл использования LIKE теряется.

потому что в доке по FB 2.5.x написано
Предикат LIKE сравнивает выражение символьного типа с шаблоном,
определѐнным во втором выражении. Сравнение с шаблоном является
чувствительным к регистру (за исключением случаев когда само поле
определено с сортировкой (COLLATION) нечувствительной к регистру). В
шаблоне, разрешается использование двух трафаретных символов:
 символ процента (%) заменяет последовательность любых символов
(число символов в последовательности может быть от 0 и более) в про-
веряемом значении;
 символ подчеркивания (_), который можно применять вместо любого
единичного символа в проверяемом значении.

Используй CONTAINING
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

alexs писал(а):Всё зависит от задачи. От объёмов данных.
Снег Север писал(а): Хочу только отметить, что хранить документы в файлах/каталогах просто неудобно, лучше хранить в BLOB полях таблиц.

У меня строго наоборот. Отказался от хранения документов в БД, теперь там только ссылка на файл.

Знал ребят которые идейно-рассово были против хранения данных в БД. Им пришлось дополнительный слой городить для управления этим лесом из файл и ссылок. А когда встал вопрос о выводе данных за пределами своей организации - вот тогда они обязалии пару человек следить, давать права и ремонтировать за директорией.

Писал проект под PostgreSQL там вообще красота - можно определенные таблицы назначать в отдельные папки/диски..
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Имхо, текстовые документы хорошо сжимаются при бекапе базы, в отличие от картинок. Поэтому я хранил бы картинки на диске, а документы в базе
ElectroGuard
новенький
Сообщения: 71
Зарегистрирован: 03.06.2016 11:10:22

Сообщение ElectroGuard »

Код: Выделить всё

Обратите внимание, если выключат свет, то многие БД с защищёнными транзакциями скорее сохранят изменения на диск

Это заблуждение. При пропадании электричества многие ваши данные вместе с защищенными транзакциями могут кануть в лету.
azsx
энтузиаст
Сообщения: 959
Зарегистрирован: 16.11.2015 05:38:32

Сообщение azsx »

Без электричества что-то куда-то запишут?

да, запишут, если есть хард раид контролер с батарейкой. Ну и БД на дисковой полке.
Вы правы ситуация редкая, когда мега админы случайно оба провода с серверов вынимают вручную, при обслуживании.
но это всё оффтопик, тс же уже нашёл решение.
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

Так БД с защищенными транзакциями тут ни причем. Такие контроллеры любую инфу сбросят на диск из кэша. А целостность в БД обеспечивается иначе.
Ответить