Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 拆分列';将值分为两列_Sql_Sql Server_Tsql - Fatal编程技术网

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
值,而不仅仅是两个。