Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Выборка данных через оператор "Where"


Автор: valentos 15.9.2014, 15:59
Доброго времени суток! Есть работающая БД на Firebird, в которой есть таблица STAFF. Описание полей там следующее:
Код

  ID_STAFF                  ID_DOMAIN NOT NULL,
  LAST_NAME                 NAME_DOMAIN,
  FIRST_NAME                NAME_DOMAIN,
  MIDDLE_NAME               NAME_DOMAIN,
  TABEL_ID                  VARCHAR(20)

Домены описаны так:
Код

DOMAIN ID_DOMAIN AS INTEGER
DOMAIN NAME_DOMAIN AS VARCHAR(100)
DOMAIN NAME_DOMAIN AS VARCHAR(100)

Суть проблемы в том что, простейший запрос:
Код

select * from STAFF
where LAST_NAME = 'Иванов'

находит 0 записей. Тоже самое если в операторе where подставить другое поле. Однако только с полем ID_STAFF все ок.
Код

select * from STAFF
where ID_STAFF = '12345'

Выборка по этому полю "проходит" и искомая запись выводится.
Насколько я мог понять, что косяк с выборкой по текстовым полям, но выборку по ним все же необходимо делать  smile 
Т.К. до этого с Firebird не работал, прошу вашей помощи..

P.S. Регистры в условии отбора проверял n-ое количество раз

Автор: Akella 15.9.2014, 21:42
Цитата(valentos @  15.9.2014,  15:59 Найти цитируемый пост)
Суть проблемы в том что, простейший запрос:
Выделить всёкод SQL
1:
2:
    
select * from STAFF
where LAST_NAME = 'Иванов'

находит 0 записей.


значит их там нет  smile 

Автор: valentos 15.9.2014, 22:36
Цитата(Akella @ 15.9.2014,  21:42)

значит их там нет  smile

Я оценил ваш юмор, но все же.. Попробую привести пример:

Код

id_staff | LAST_NAME | FIRST_NAME | MIDDLE_NAME | TABEL_ID |
---------------------------------------------------------------------------
1234    | Иванов     | Сергей     | Викторович  |  321      |
---------------------------------------------------------------------------

запрос
Код

select * from STAFF
where ID_STAFF = '1234'

..выводит эту запись
а если написать
Код

select * from STAFF
where LAST_NAME = 'Иванов'
/* или:
where FIRST_NAME = 'Сергей'
или:
where MIDDLE_NAME = 'Викторович'
или:
where Tabel_id = '321'
*/

Получаем 0 записей

Автор: Akella 15.9.2014, 23:22
Не верю.
Значит там не "Иванов".
Нужно доставать свой хрустальный шар, чувствую.
Может там есть пробел. Может там буква "а" латиницей. Может там "иванов" (см на регистр символов).
Может ты не "соблюдаешь" кодировку.
Давай тестовую базу. Больше гадать нет желания.

Автор: valentos 16.9.2014, 09:26
Akella, про регистры писал в первом же сообщении, не полный же я тормоз smile 
А вот за кодировку большое спасибо, про нее не подумал. Все заработало smile 

P.S. Akella, от ЯПа привет. Если не ошибся, ты вроде там есть)
 

Автор: Akella 16.9.2014, 09:54
нету  smile 
но всё равно спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)