Man Down Ответов: 1

Ошибка преобразования в тип varchar значение 'terminatedbycompany' в тип данных int


Теория, лежащая в основе этого, я хочу знать, по какой причине сотрудники уволились, а затем я внутренне присоединяюсь к таблице 2 (причины увольнения с пользователями) были два разговора друг с другом и таблица причин увольнения содержит 2 столбца (Id (int), Name(varchar)) и другой , таблица пользователей содержит 1 столбец (EmploymentStatusId (int)).


Я могу использовать EmploymentStatusId (int) от пользователей tbl с Id (int) из другой таблицы, которая является причиной прекращения, потому что оба они имеют один и тот же тип данных (int):
SELECT 
u.EmploymentStatusId AS Status

FROM 
x AS p INNER JOIN y AS u ON u.Id=x 
INNER JOIN x AS t ON t.Id = y
WHERE r=214 order by g;


Но когда я пытаюсь использовать EmploymentStatusId (int) от пользователей tbl с именем (varchar) из причин прекращения tbl , у меня возникает проблема:
SELECT
w AS Status

FROM 
s AS p INNER JOIN s AS u ON u.q=v
INNER JOIN v AS t ON t.Name = n
WHERE f=214 order by h;


И затем Ошибка :
Ошибка преобразования в тип varchar значение 'TerminatedByCompany' в тип данных int.

я знаю почему , потому что у них разные типы данных, поэтому они не могут разговаривать друг с другом.
но я пытался также решить эту проблему с помощью Convert, но я не знаю, почему или как это не работает.
Может кто-нибудь, пожалуйста, помочь или указать мне правильное направление. Спасибо.
Запрос, где я пытался с помощью CONVERT, выглядит следующим образом:
SELECT
CONVERT(INT, CONVERT(VARCHAR(12), t.Name)) as Status

FROM 
s AS p INNER JOIN t AS u ON j=u
INNER JOIN z AS t ON z = z
WHERE z=214 order by  b;


Что я уже пробовал:

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

Richard MacCutchan

Вы не можете преобразовать строку алфавитного текста в int, это не имеет смысла.

Man Down

я знаю и твое право

Richard MacCutchan

Так чего же вы ожидаете, публикуя этот вопрос?

Man Down

если есть что-то для этого, преобразуйте varchar в int . но теперь я это выяснил.
tnx за вашу помощь и время

Richard MacCutchan

Как я уже сказал, Вопрос не имеет смысла. Какую ценность вы ожидаете от "TerminatedByCompany"?

1 Ответов

Рейтинг:
4

OriginalGriff

Посмотрите на свой код:

INNER JOIN dbo.TerminationReasons AS t ON t.Name = u.EmploymentStatusId
Если у них есть разные типы данных, где один - это имя (в настоящее время "TerminatedByCompany"), а другой-целочисленное значение идентификатора, то вы ничего не можете сделать, чтобы заставить их пройти сравнение. SQL-правильно-говорит: "Не будь таким глупым, я не могу сравнивать их, так как они даже близко не похожи друг на друга"
Вместо того чтобы пытаться преобразовать и обойти это, вам нужно более внимательно посмотреть на свои таблицы и решить, какие значения вы должны использовать - я предполагаю, что это имя совершенно неправильный столбец для предложения JOIN, но так как я не могу получить доступ к вашей БД, я понятия не имею, что вам нужно: это, вероятно, целое число, а не NVARCHAR, и, вероятно, должно быть уже установлено отношение внешнего ключа.


Man Down

именно так я и думал, но мои коллеги давили на меня за этим 2-м столом , но теперь, я на 100% уверен, между ними ничего нет.

Tnx за вашу помощь и комментарий OriginalGriff

OriginalGriff

Пожалуйста!