0

同じテーブル内の別の列 y に複製したい列 x を持つ大きなテーブルがあります。これに対する SQL ステートメントは何でしょうか?

1 番目の列が呼び出されname、名前と姓がスペースで区切られて含まれます。それらを新しい名と姓の列に移動するにはどうすればよいですか?

4

4 に答える 4

1

名前に余分なスペースが含まれることがありますが、このスクリプトはそのような状況を処理します

create table #t(name nvarchar(100), firstname nvarchar(50), lastname nvarchar(50))

insert #t (name) values ('Thomas Clausen')
insert #t (name) values ('  Bill Gates')
insert #t (name) values ('Steven Jobs  ')
insert #t (name) values ('Donald of Duck')
insert #t (name) values ('microsoft')
insert #t (name) values ('')

update #t 
set firstname = nullif(left(ltrim(name), charindex(' ', ltrim(name) + ' ')-1), ''),
lastname = nullif(stuff(rtrim(name), 1,len(rtrim(name))
           - charindex(' ', reverse(rtrim(name))), ''), '')

結果:

FirstName   LastName
Thomas      Clausen
Bill        Gates
Steven      Jobs
Donald      Duck
microsoft   NULL
NULL        NULL
于 2012-08-01T09:28:55.323 に答える
0

編集:

UPDATE Table
   SET y = x

編集:

あなたの質問の変更から、あなたは「name」列に次のようなものがJohn Adamsあり、すでに存在する2つの列、FirstNameとLastNameを埋めたいと理解しています。その場合は、これを試してください

UPDATE table
   SET FirstName = PARSENAME(REPLACE(name, ' ', '.'), 2),
       LastName = PARSENAME(REPLACE(name, ' ', '.'), 1)

名と名前を区切るスペースがない場合、エラーメッセージは表示されず、FirstNameにNULL値が返され、フルネーム全体がLastNameとして返されます。

于 2012-08-01T06:29:23.227 に答える
0
Select t1.Name,t1.Marks as Maths,t2.Marks as physics,t3.Marks as Chemistry from 
(select T.Name,T.Marks,T.Subjects
from Student as T
where T.Subjects like 'Maths') as t1
inner join 
(select D.Name,D.Marks,D.Subjects
from Student as D
where D.Subjects like 'Physics') as t2
on t1.Name like t2.Name
inner join
(select E.Name,E.Marks,E.Subjects
from Student as E
where E.Subjects like 'Chemistry') as t3
on t2.Name like t3.Name
于 2012-08-01T07:05:43.353 に答える
0
update  YourTable
set     y = x
于 2012-08-01T06:26:07.610 に答える