我的SQL程序是
nvidia
当查询插入时,它们会按预期返回值,但我的条目应该仅在表格中输入我插入的第一个有价值的字母。
输出
create proc sp_tblAppRegistration
(
@Action varchar(100) = null,
@ID int = null,
@RegCode varchar (100) = null,
@FirstName varchar(50) = null,
@MiddleName varchar (50)= null,
@LastName varchar (50)= null,
@Email varchar (100)= null,
@EmailVerified bit = null,
@MobileNo varchar (20) = null,
@DateOFBirth varchar (20)= null,
@StateID int = null,
@CityID int = null,
@EmailVerificationCode varchar (50)= null
)
WITH RECOMPILE
AS BEGIN
IF @Action = 'Register'
BEGIN
declare @newRegCode varchar(max) = 'TM-'+ cast((select count(*)+1 from tblRegistration) as varchar(10));
declare @VerificationCode varchar(max) = (select left(NEWID(),8));
--//======================================
insert into tblAppRegistration(RegCode,FirstName,MiddleName,LastName
,Email,EmailVerified,MobileNo,DateOFBirth,StateID,CityID,
,EmailVerificationCode)
values
(@newRegCode,@FirstName,@MiddleName,@LastName,@Email,'false',@MobileNo,@DateOFBirth,@StateID
,@CityID,@VerificationCode)
select EmailVerificationCode, RegCode from tblRegistration order by CreationDate desc
END
END
问题是什么问题请帮助我。
答案 0 :(得分:0)
当您遗漏长度时会发生此问题。在许多情况下,没有长度的字符串的默认值是1。
因此,如果存储过程定义为:
create procedure x (
@FirstName varchar,
. . .
)
begin
. . .
end;
默认长度为“1”。您可以通过添加长度来轻松解决此问题:
create procedure x (
@FirstName varchar(255),
. . .
)
begin
. . .
end;
如果您使用declare
:
declare @FirstName varchar;
相当于:
declare @FirstName varchar(1);
道德?在SQL Server中,始终包括使用varchar()
和相关类型时的长度。
答案 1 :(得分:0)
要获得第一个角色,您只需要执行以下操作: -
LEFT(colName, 1)
Insert into table(Fields,.....) values(Left(@newRegCode , 1), ....)