2015-10-07 4 views
0

Я на последних этапах создания отчета и я столкнулся с этой ошибкой:
Выравнивание по левому краю - NVARCHAR/BIGINT

Error converting data type nvarchar to bigint.

Я подозреваю, что это связано с LEFT JOIN я использую , Я просто пытаюсь получить поле Label из этой таблицы, ничего больше.

LEFT JOIN [taxonomies_taxonomy_entry] 
    ON [era_account_details].[sector] = [taxonomies_taxonomy_entry].[taxonomyentryid] 

[taxonomies_taxonomy_entry].[label] AS [Industry] 

Я пытаюсь выбрать поле метки, которое является полем nvarchar.

ЛЕВАЯ РЕГИСТРИРУЙТЕСЬ использования:..
[era_account_details] [сектора] = NVARCHAR
[taxonomies_taxonomy_entry] [taxonomyentryid] = BigInt

Любые советы?

Большое спасибо,

+2

Почему они разные типы? – Caramiriel

+1

Я понятия не имею; Я не проектировал базу данных :( – Justin

+0

Вам придется преобразовать один тип в другой с помощью 'CAST' или' CONVERT'. Это не позволит оптимизатору использовать какие-либо индексы. Это будет * медленный * запрос. Если 'sector' должен содержать * только * целочисленные значения (и не содержит никакого мусора), вы можете преобразовать его в' bigint'. Другой вариант - добавить индексированный столбец 'nvarchar' в' taxonomies_taxonomy_entry' с помощью строковое представление идентификатора. Все еще уродливо, но вам не нужно обновлять существующие данные. –

ответ

1

Может ли это сделать трюк?

CAST([taxonomies_taxonomy_entry].[taxonomyentryid] As nvarchar(500)) 
+0

EPIC JUST FIGURED IT OUT! – Justin

+0

ВЫ УДИВИТЕЛЬНЫ! – Justin

+0

Обратите внимание, что это операция вокруг столбца/значения, поэтому это делает ее довольно дорогостоящей. Но если вам не разрешено изменять базу данных, это почти все, что вы можете сделать. – Caramiriel