Member 13937439 Ответов: 2

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


Здравствуйте, мне нужна помощь с нижеприведенным вопросом. Я написал сценарий, но он дает мне ошибку. Есть три стола

Пользователи:(UserId,EmailAddress, FirstName, LastName)
Продукты:(ProductId, ProductName)
Загрузки:(DownloadID,UserID,DownloadDate,FileName,ProductID)


Добавьте три строки в таблицу загрузок: одну строку для пользователя 1 и продукта 2; одну для пользователя 2 и продукта 1; и одну для пользователя 2 и продукта 2. Используйте функцию GETDATE, чтобы вставить текущую дату и время в столбец DownloadDate.



Спасибо

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

Сценарий, который я написал, выглядит следующим образом:

Вставить в загрузки (идентификатор пользователя, идентификатор, DownloadDate)
ЦЕННОСТИ
('1',Продукты 2),GETDATE()),
('2',Продукты 1,GETDATE()),
('2',Продукты 2,GETDATE());

Но я получаю следующую ошибку:
sg 245, Уровень 16, состояние 1, линия 1
Ошибка преобразования при преобразовании значения varchar 'Products 2' В тип данных int.

Как я могу это исправить?

Спасибо

2 Ответов

Рейтинг:
2

OriginalGriff

Просто: "продукты 2" - это не целое число! (Кроме того, там есть паразитная закрытая скобка) даже в виде строки это должно быть заключенное в кавычки значение:

INSERT INTO Downloads (UserId, ProductID, DownloadDate) 
VALUES
   ('1', 'Products 2',GETDATE()),
   ('2', 'Products 1',GETDATE()),
   ('2', 'Products 2',GETDATE());
Но... какой тип данных является ProductID, как в таблицах Products, так и в таблицах Downloads - они должны быть одинаковыми, и вывод из сообщения об ошибке заключается в том, что по крайней мере один из них является INT, когда вы передаете значение VARCHAR (или NVARCHAR).

Я бы внимательно посмотрел на ваши определения таблиц и проверил, какие типы вы пытаетесь использовать: цитируемый UserID как бы подразумевает, что это также строка, и она, вероятно, должна быть целым числом, а не цитироваться в операторе INSERT.


Member 13937439

Привет OriginalGriff, порядок загрузки таблицы таков
DownloadID,Идентификатор Пользователя,DownloadDate,Именем, "Кодтовара".

"Кодтовара" в обе таблицы Products и популярность имеет значение как int. Один из них является первичным ключом, а другой-внешним ключом. Надеюсь, это поможет. Я попробовал код, но он дал мне ту же ошибку.

Спасибо

OriginalGriff

Прочтите еще раз, что я сказал.
Текст "продукты 2" не является целым числом! Целые числа-это 1, 2, 3, 796, 2147483648 - они не содержат символов от " А " до "Я", от " А " до "Я", пробелов, знаков доллара или каких-либо знаков препинания или специальных символов...

Рейтинг:
1

Santosh kumar Pithani

--String values must be under single quotations('Products2') but not integers.
--IF your DownloadDate column datatype is varchar then use convert(Varchar(20),GETDATE(),101) 
Insert into Downloads (UserId, ProductID, DownloadDate) 

                                  VALUES
                                      (1,'Products2',GETDATE()),
                                      (2,'Products1',GETDATE()),
                                      (2,'Products2',GETDATE());


Member 13937439

@Santosh,
Предложенное вами решение не сработало. Это дало мне то же самое сообщение об ошибке. В таблице загрузки порядок столбцов выглядит следующим образом:
DownloadID
идентификатор пользователя
DownloadDate
Имя файла
ProductID

Мой тип данных столбца DownloadDate-DateTime, а не NULL. Надеюсь, это поможет.

Спасибо

Santosh kumar Pithani

Здравствуйте, я уже упоминал вам, что целочисленный тип данных не допускает строковых значений.если вы используете типы данных varchar или char,то убедитесь, что их длина равна varchar(500), char(50).