Member 11819205 Ответов: 2

я получаю эту ошибку неправильного синтаксиса рядом с ','. в sql server 2008 R2


это мой код.


Insert Into Teacher1(Id_Teacher, Name, Familyname, Phone, Mobile, Email, Adress, Fk_Sex, Fk_Major, Fk_Education)

Values( ,"Kamran", "Mortazavi", 8899100, 09126254019, "K.m.r@yahoo.com", , 2, 3,2)




это ошибка :

Msg 102, Уровень 15, Состояние 1, Строка 2
Неправильный синтаксис рядом с ','.



- что случилось ? как это исправить ?

[no name]

Укажите правильный тип и количество значений.

2 Ответов

Рейтинг:
17

Suvendu Shekhar Giri

Вы не обеспечили ценность для Id_Teacher и Адрес Вам нужно указать значение или вы можете передать его НУЛЕВОЙ или просто проигнорируйте колонку из ВСТАВЛЯТЬ заявление.

1. Игнорирование Столбцов

Insert Into Teacher1(Name, Familyname, Phone, Mobile, Email, Fk_Sex, Fk_Major, Fk_Education)
 
Values("Kamran", "Mortazavi", 8899100, 09126254019, "K.m.r@yahoo.com", 2, 3,2)

Но для успешного выполнения этого запроса вам необходимо включить идентификатор столбца Id_Teacher
2. Передача NULL
Insert Into Teacher1(Id_Teacher, Name, Familyname, Phone, Mobile, Email, Adress, Fk_Sex, Fk_Major, Fk_Education)
 
Values( NULL,"Kamran", "Mortazavi", 8899100, 09126254019, "K.m.r@yahoo.com",NULL , 2, 3,2)



Важный
Я настоятельно рекомендую вам использовать параметризованный запрос или хранимую процедуру, чтобы избежать SQL-инъекции.
Прочтите этот учебник:[^]

Надеюсь, это поможет :)


Member 11819205

я копирую этот код :


Вставить В Teacher1(Id_Teacher, Имя, Фамилия, Телефон, Мобильный Телефон, Электронная Почта, Адрес, Fk_Sex, Fk_Major, Fk_Education)

Значения( 1, 'Камрань', 'Мортазави', 8899100, 09126254019, 'K.m.r@yahoo.com',NULL , 2, 3,2)


и вставьте его в sql но я получаю этот код ошибки :


Msg 8115, Уровень 16, Состояние 2, Строка 1
Ошибка арифметического переполнения при преобразовании выражения в тип данных int.
Заявление было прекращено.


что же теперь делать ?

Suvendu Shekhar Giri

Хорошо. Не беспокойся. Можете ли вы поделиться структурой таблицы (то есть типами данных каждого поля/столбца)?

Member 11819205

здесь :

tools.dynamicdrive.com/imageoptimizer/data/m9vyk81/Untitled.jpg

Suvendu Shekhar Giri

Нет, я не могу видеть изображение. Можете ли вы написать здесь как Id_Teacher int,Name varchar(50),..... ?

Member 11819205

здесь :

Имя нварчар(50) Проверен

Семейное имя nvarchar(50) Проверен

Телефон int проверен

Мобильный int проверен

Электронная почта nvarchar(MAX) проверена

Адрес nvarchar(MAX) Uncahecked

Fk_Sex int проверено

Fk_Major int проверено

Fk_Education int проверено

Suvendu Shekhar Giri

Поля Phone и Mobile не могут хранить значение больше максимального размера INT, поскольку вы объявили их как тип данных INT. Это вызывает арифметическое переполнение. Мое предложение состоит в том, чтобы изменить их на varchar(15). Вам не нужно объявлять поле числовым типом, если вы не хотите, чтобы над ним выполнялись какие-либо арифметические операции.
Если вы измените это, то вам также придется изменить запрос так, чтобы он мог принимать строки в качестве значений, то есть нужно обернуть значения в пару одинарных кавычек.

Member 11819205

Огромное спасибо!. теперь все кончено. спасибо еще раз.

Suvendu Shekhar Giri

Рад был узнать, что это помогло :)

Рейтинг:
1

Kornfeld Eliyahu Peter

SQL не поддерживает запись по умолчанию, подобную записи в INSERT INTO ... Запрос значений...
Вы можете не пропускать значения, а добавить вместо них еще одну запятую...

Values( !!!,"Kamran", "Mortazavi", 8899100, 09126254019, "K.m.r@yahoo.com", !!!, 2, 3,2)

Вы должны добавить значения или удалить поля...


Sanjoy Das2

в следующем коде я получаю ошибку
Msg 102, Уровень 15, Состояние 1, Строка 3
Неверный синтаксис рядом с 'NULL'.

Выберите столбцы firstName + '' + имя + '(' + UserCode + ')', как 'имя пользователя',TBLTRANSJOBS.JobName как "имя задания", TBLTRANSDOCUMENTS.DocName как имя кредита',конвертировать(тип varchar(25),AssignedDate,131), а 'дате',конвертировать(тип varchar(25),
(Выберите правильный('0' + литые(функция datediff(второй,AssignedDate,функции getdate()) / 3600 как varchar),2) + ':' + правая('0' + литые((функция datediff(второй,AssignedDate,функции getdate()) / 60) % 60 как varchar),2) + ':' + правая('0' + литые(функция datediff(второй,AssignedDate,функции getdate()) % 60 как varchar),2) как 'прошедшее время'
FROM ((TBLTRANSDOCUMENTS inner join TBLTRANSJOBS ON TBLTRANSJOBS.JobID = TBLTRANSDOCUMENTS.JobID) внутреннее соединение TBLTRANSUSERS на TBLTRANSDOCUMENTS.ExtractionAssigned=TBLTRANSUSERS.Идентификатор пользователя) где KeyedDate ExtractionAssigned null и не null