Sql 拆分列';将值分为两列
我有一个表Sql 拆分列';将值分为两列,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个表T1,它有一列A1。该列的值类似于James Patterson%Michael Ledwidge 我需要将这些列中的值拆分为另外两列 A1=詹姆斯·帕特森 A2=迈克尔·莱德威奇 同样,表T1中有20条记录 如何做到这一点呢?你说,还有两列,但其中一列似乎是相同的,A1 无论如何: UPDATE T1 SET A1 = SUBSTRING(A1, 1, CHARINDEX('%', A1) - 1), A2 = STUFF(A1, 1, CHARINDEX('%', A1),
T1
,它有一列A1
。该列的值类似于James Patterson%Michael Ledwidge
我需要将这些列中的值拆分为另外两列
A1=詹姆斯·帕特森A2=迈克尔·莱德威奇 同样,表
T1
中有20条记录
如何做到这一点呢?你说,还有两列,但其中一列似乎是相同的,A1
无论如何:
UPDATE T1
SET
A1 = SUBSTRING(A1, 1, CHARINDEX('%', A1) - 1),
A2 = STUFF(A1, 1, CHARINDEX('%', A1), '')
WHERE CHARINDEX('%', A1) > 0
你说,另外两列,但其中一列看起来是相同的,A1
无论如何:
UPDATE T1
SET
A1 = SUBSTRING(A1, 1, CHARINDEX('%', A1) - 1),
A2 = STUFF(A1, 1, CHARINDEX('%', A1), '')
WHERE CHARINDEX('%', A1) > 0
您是希望进行此拆分以显示,还是希望对存储在数据库中的数据进行永久性更改?如果这两列要存储相同类型的数据(例如,两列都是标识作者),则应将其移出到单独的表中,每个值对应一行,并将外键返回到现有表中的单行。这避免了复杂的搜索(在您的设计中,您现在必须搜索A1和A2),并允许将来添加无限多的
an
值,而不仅仅是两个。是否为了显示目的进行此拆分,或者,您是否希望对数据库中存储的数据进行永久性更改?如果这两列要存储相同类型的数据(例如,两列都是标识作者),则应将它们移出到一个单独的表中,每个值对应一行,并将外键移回现有表中的一行。这避免了复杂的搜索(在您的设计中,现在必须搜索A1和A2),并允许将来添加无限多的an
值,而不仅仅是两个。