Sql server 将数据拆分为单独的列公式
我们正在为学生使用一个外部测验工具,他们可以通过LMS中的链接访问该工具。当他们点击链接时,我们可以传递StudentID、CourseID、ModuleID等的参数。测验工具允许我们在一列中记录此变量,使其看起来像034-23-12或Student034-Course23-Module12等 使用Zapier,我们可以将结果添加到我们的MSSQL数据库中,然后结果可以显示在学生帐户上 然而,为了实现这一点,我们需要能够将单列记录拆分为3列—StudentID、CourseID和ModuleIDSql server 将数据拆分为单独的列公式,sql-server,Sql Server,我们正在为学生使用一个外部测验工具,他们可以通过LMS中的链接访问该工具。当他们点击链接时,我们可以传递StudentID、CourseID、ModuleID等的参数。测验工具允许我们在一列中记录此变量,使其看起来像034-23-12或Student034-Course23-Module12等 使用Zapier,我们可以将结果添加到我们的MSSQL数据库中,然后结果可以显示在学生帐户上 然而,为了实现这一点,我们需要能够将单列记录拆分为3列—StudentID、CourseID和ModuleID
QuizRecord StudentID CourseID ModuleID
034-23-12 34 23 12
非常感谢您对本公式的任何帮助。示例数据
DECLARE @Table TABLE (QuizRecord varchar(100))
INSERT INTO @Table
SELECT '034-23-12' UNION ALL
SELECT '035-24-13' UNION ALL
SELECT '036-25-14'
将单个列拆分为多个列的查询
SELECT *
,REPLACE(SUBSTRING(QuizRecord, 0, CHARINDEX('-', QuizRecord)), 0, '') AS StudentID
,REPLACE(SUBSTRING(QuizRecord, CHARINDEX('-', QuizRecord), CHARINDEX('-', QuizRecord)), '-', '') AS CourseID
,REVERSE(SUBSTRING(REVERSE(QuizRecord), 0, CHARINDEX('-', REVERSE(QuizRecord)))) AS ModuleID
FROM @Table
结果
QuizRecord StudentID CourseID ModuleID
--------------------------------------------
034-23-12 34 23 12
035-24-13 35 24 13
036-25-14 36 25 14
您可以使用“parsename”,因为您有4个(或更少)拆分 声明@data varchar(20)
Set @data='034-23-12'
Select
parsename(replace(@data,'-','.'),1),
parsename(replace(@data,'-','.'),2),
parsename(replace(@data,'-','.'),3),
parsename(replace(@data,'-','.'),4)