2015-03-09 3 views
2

Выполнение этого запроса на жабаСтранное поведение, результаты связанного DB

select * from [email protected] 
where "CustomerNumber"=1 

Получает одиночные результаты строк, однако

select * from [email protected] 
where "CustomerNumber"=(select 1 from dual) 

Еще возвращает одну строку, но почти каждый столбец имеет значение NULL Любой функции преобразования данных или ссылки на другие таблицы вызывают такой же эффект. Есть идеи?

Попытка это на SQL +, я получаю это:

select "Forename" from [email protected] where "CustomerNumber"=1 

Результат: Эми

select "Forename" from [email protected] where "CustomerNumber"=(select 1 from dual) 

Результат: мой

Я уверен, что это должен быть какой-то кодировки символов вещь, но Я в тупике.

+0

Получаете ли вы тот же результат, если вы запускаете вышеуказанные два запроса в SQL * Plus? – Boneist

+0

Извините, что вы правы - это не проблема с жабами. SQL + также не возвращает то, что мне нужно (я обновил вопрос) –

ответ

0

Проблема преобразования из NVARCHAR в VARCHAR ...

Select 
Cast("Forename" As Varchar(50)) 
From 
[email protected] 
Where 
"CustomerNumber"=(select 1 from dual) 

не работает, потому что (выбрать 1 из двух), кажется, вызывает данные, которые должны быть AutoCast. Что делает работу какие-либо изменения в стоимости после литья - что я думаю, что может быть побуждая Oracle изменить порядок вещей

Select 
Substr(Cast("Forename" As Varchar(50)),1,50) 
From 
[email protected] 
Where 
"CustomerNumber"=(select 1 from dual) 

Это работает. Это уродливое - немного дорогое решение, поэтому у меня есть обходные решения - но я думал, что я опубликую это как пищу для размышлений, если кто-то другой столкнется с одной и той же проблемой.

Смежные вопросы