我想存储我从前端得到的@Additional变量的值,格式为'98789797,879879879,987987978'。我想通过删除相同用户名的两个no.s之间的逗号将其存储在表'PhoneNo.s'的不同列中。
ALTER PROCEDURE [dbo].[AddNewEmployee]
(
@Name nvarchar(30),
@SurName nvarchar(20),
@Email nvarchar(30),
@Mobile nvarchar(60),
@Address nvarchar(65),
@File nvarchar(40),
@Country nvarchar(20),
@State nvarchar(20),
@City nvarchar(20),
@Gender nvarchar(10),
@Additional nvarchar(100)
)
AS
begin
insert into Users
( Name, SurName, Email, Mobile, Address,FilePath,Country,State,City,Gender)
values
(@Name, @SurName, @Email, @Mobile,@Address,@File,@Country,@State,@City,@Gender)
insert into [PhoneNo.s]
(
UserId,PhoneNo)
values
(
@Name,
@Additional
)
end
我怎样才能实现这一目标?我在sql中并不是那么专业。我看起来很复杂,我无法继续下去!!
答案 0 :(得分:1)
使用分割功能。这在sql server中工作。您可以将其更改为mysql
CREATE FUNCTION [dbo].[Split]
(
@RowData nvarchar(MAX),
@SplitOn nvarchar(5)
)
RETURNS @ReturnValue TABLE
(Data NVARCHAR(MAX))
AS
BEGIN
Declare @Counter int
Set @Counter = 1
While (Charindex(@SplitOn,@RowData)>0)
Begin
Insert Into @ReturnValue (data)
Select Data =
ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))
Set @RowData =
Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))
Set @Counter = @Counter + 1
End
Insert Into @ReturnValue (data)
Select Data = ltrim(rtrim(@RowData))
Return
END
在您的存储过程中
您的第一个插入编码是正确的。将第二个插入编码替换为以下编码。
DECLARE @PhoneNumber Varchar(MAX)
SET @PhoneNumber='98798797,897987,9879'
INSERT INTO AddnewEmployee(name,phonenumber)
SELECT @name, Data FROM dbo.Split(@phonenumber,',').
上面的代码将数字拆分并插入每一行,如
name phone number
AJ 98798797
AJ 897987
AJ 9879
希望这会对你有所帮助。