使用SSMS 2014
我在特定列中的数据库中有数据。平均数据行看起来像这样:
(5:30) 3-J.WINSTON PASS INCOMPLETE DEEP LEFT TO 13-M.EVANS (23-R.ALFORD).
我的任务是检索该行中的第一个播放器,在这种情况下,我正在检索J.Winston。
我用它来检索和更新名称的列。它完全按照需要工作。但它的一些东西告诉我这个构造很差。有关改善的提示吗?
UPDATE nfl.dbo.Temp_NFL2015
Set Player_Name = SUBSTRING(description,LEN(Left(description,Patindex('%-%',description)))+1,CHARINDEX(' ',description,LEN(Left(description,Patindex('%-%',description))))-1-LEN(Left(description,PATINDEX('%-%', description))))
from NFL.dbo.Temp_NFL2015
答案 0 :(得分:1)
当您提取数据或进行研究时,数据的规范化将有助于简化操作。
考虑你的例子:
(5:30) 3-J.WINSTON PASS INCOMPLETE DEEP LEFT TO 13-M.EVANS (23-R.ALFORD).
语法(大致)适用于:
(Game Time) (Source Player) (Action) (Target Player) ((Other Involved Players))
这表示基表操作具有以下结构:
ActionID (identity to mark discrete actions)
GameTime
SourcePlayer
Action
TargetPlayer
为了包括其他参与的玩家,我们将其分成一个单独的表格, Action_InvolvedPlayers:
InvolvedActionID (referent to Actions.ActionID)
InvolvedPlayer
考虑要点: