我已经尝试了很多代码,但它一直没用。
所以,我需要为一个只有完整名称的表设置一个游标:
create database DB01
use DB01
create table Clients
(
complete_name varchar(50)
)
insert into Clients
values ('Ralph Van Beethoven')
没问题。
现在,我有另一个数据库,我必须在其中将我的名字分成 Name、First Last Name 和 Second Last Name,所以它必须是这样的:
- 姓名:拉尔夫
- 名:范
- 第二姓:贝多芬
代码:
create database DB02
use DB02
create table Clients_Details
(
Name varchar(50),
First_Last_Name varchar(50),
Second_Last_Name varchar(50)
)
真正的东西来了。我需要一个游标来从 DB01 中拆分完整名称并将其插入 DB02,我有以下代码:
Declare @name as varchar(50)
Declare cClients cursor for Select complete_name from Clients
Declare @temporal table
(
tName varchar(50),
tFLName varchar(50),
tSLName varchar(50)
)
Open cClients
Fetch cClients into @name
While (@@fetch_status = 0 )
Begin
Insert into @temporal
Select
case charindex(' ', @name)
when 0 then @name
else left(@nname, charindex(' ', @name) - 1)
end as tFLName,
case charindex(' ', @name)
when 0 then null
else right(@nname, len(@name) - charindex(' ', @nombre))
end as tSLName
from
Clients
Insert into BD02.dbo.Clients_Details
select tName, tFLName, tSLName
from @temporal
Fetch cClientes into @namecursor
End
Close cClients
Deallocate cClients
它抛出一个错误
列名或指定列与定义不匹配
所以我猜我的错误在于charindex
因为它只保存了第一个姓氏和第二个姓氏,但我不太确定现在该做什么。
有人可以帮助我吗?