Sql 你能把一个字符串字段变成一个表吗
我是新手,所以我的术语可能不太准确。对不起 好的,我引用了SQL中的一些表,它生成了这样一个表。我基本上理解它,你会看到参数列有一个字符串,其中一个列表由一个管道分隔|在=后面还有一个随机字母,我以后也需要对其进行排序 [附表][1] 该表随后用于某些报告软件 我的问题是,我可以将此参数字段拆分为每个参数和值吗?或者只选择我需要的特定参数,或者这是一个坏主意 这是我到目前为止的代码[SQL][2] 对不起,这是密码,我会把重点放在我要找的东西上 选择[零件][参数]Sql 你能把一个字符串字段变成一个表吗,sql,sql-server,Sql,Sql Server,我是新手,所以我的术语可能不太准确。对不起 好的,我引用了SQL中的一些表,它生成了这样一个表。我基本上理解它,你会看到参数列有一个字符串,其中一个列表由一个管道分隔|在=后面还有一个随机字母,我以后也需要对其进行排序 [附表][1] 该表随后用于某些报告软件 我的问题是,我可以将此参数字段拆分为每个参数和值吗?或者只选择我需要的特定参数,或者这是一个坏主意 这是我到目前为止的代码[SQL][2] 对不起,这是密码,我会把重点放在我要找的东西上 选择[零件][参数] 从[Parts]中我所能看
从[Parts]中我所能看到的是,您选择了一列,这导致该列中出现大量文本。您可以将其导出到excel,并使用“文本到列”功能,将管道|作为分隔符,并使用等号=号。这将为每个|和=符号生成一个单独的列。有许多拆分/解析示例可用。如果2016年,您可以使用String_Split 下面是一个串联示例 范例 返回
我认为这在纯sql中是不可能的-您使用的是什么数据库?例如,在SQL Server中,您可以创建一个表函数,该函数将以您希望的方式返回结果,但这是“Transact-SQL”。请将表描述和代码作为文本而不是图像发布示例数据,而不是屏幕截图,所需结果将非常有用。谢谢John,我尝试了,但出现了一个错误。我想不是2016@Shannon我提供的代码是2008-2016。你犯了什么错误?嗯,很有意思,可能是我做错了什么未知错误error@Shannon要在顶部清除,请选择-->A.ID Yes,我修改了这些字段
Select A.ID
,Item = left(B.RetVal,charindex('=',B.RetVal+'=')-1)
,Value = right(B.RetVal,len(B.RetVal)-charindex('=',B.RetVal+'=')-1)
From YourTable A
Cross Apply (
Select RetSeq = Row_Number() over (Order By (Select null))
,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
From (Select x = Cast('<x>' + replace((Select replace(A.Parameters,'|','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.')) as A
Cross Apply x.nodes('x') AS B(i)
) B
-- YOUR OPTIONAL WHERE STATEMENT HERE For example: Where A.ID=1