Использование Pro*C для доступа к базе данных TimesTen

Я пытаюсь использовать Pro*C для доступа к базе данных TimesTen. Код для создания таблицы в TimesTen:

create table testtable(id number(4) not null primary key, ename  char(10));

Я использую Pro*C для извлечения данных из этой таблицы. Когда я использую этот SQL:

select * from testtable where ename like 'wxd'

Я не получаю результатов. Но когда я использую это:

select * from testtable where ename like 'wxd       '

Я получаю правильные результаты. Я должен заполнить достаточно места в поле. Есть ли другой способ получить правильный результат?


person sky蓝色    schedule 20.06.2013    source источник


Ответы (2)


Это не проблема Pro*C, а характеристика типа данных, который вы выбрали для столбца. CHAR(10) означает, что ширина поля всегда составляет 10 символов, даже если вставляемое значение короче. База данных дополнит короткое значение пробелами, поэтому вам пришлось добавить дополнительные пробелы в запрос.

Если вам нужен столбец переменной длины, используйте вместо него VARCHAR(10).

person Burhan Ali    schedule 15.09.2013

Вы также можете использовать следующее, которое работает как со столбцами CHAR, так и с VARCHAR:

выберите * из тестовой таблицы, где имя типа «wxd%»

Условие, подобное SQL, обычно имеет подстановочный знак.

person ScalableDBDoug    schedule 02.05.2018