使用SQL Server,如何拆分字符串以便访问项目x?
拿一个字符串"Hello John Smith".如何按空格分割字符串并访问索引1处应该返回"John"的项目?
我有一个像这样的SQL表:
| SomeID | OtherID | Data
+----------------+-------------+-------------------
| abcdef-..... | cdef123-... | 18,20,22
| abcdef-..... | 4554a24-... | 17,19
| 987654-..... | 12324a2-... | 13,19,20
Run Code Online (Sandbox Code Playgroud)
是否有一个查询,我可以执行查询,如SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......'返回单个行,如下所示:
| OtherID | SplitData
+-------------+-------------------
| cdef123-... | 18
| cdef123-... | 20
| cdef123-... | 22
| 4554a24-... | 17
| 4554a24-... | 19
Run Code Online (Sandbox Code Playgroud)
基本上将逗号中的数据拆分成单独的行?
我知道将comma-separated字符串存储到关系数据库听起来很愚蠢,但消费者应用程序中的正常用例使得这非常有用.
我不想在应用程序中进行拆分,因为我需要分页,因此我想在重构整个应用程序之前探索选项.
这是SQL Server 2008(非R2).
我有一个存储过程,它将逗号分隔值作为输入.我需要将它分开,并需要将它作为单独的行存储在表中.
让SP的输入是:
Rule_ID ListType_ID Values
1 2 319,400,521,8465,2013
Run Code Online (Sandbox Code Playgroud)
我需要将它存储DistributionRule_x_ListType在以下格式调用的表中:
Rule_ID ListType_ID Value
1 2 319
1 2 400
1 2 521
1 2 8465
1 2 2013
Run Code Online (Sandbox Code Playgroud)
我的SP如下所示:
ALTER PROCEDURE [dbo].[spInsertDistributionRuleListType]
(@Rule_ID int,
@ListType_ID int,
@Values VARCHAR(MAX)=NULL
)
AS
BEGIN
INSERT INTO DistributionRule_x_ListType (Rule_ID,ListType_ID,Value)
VALUES (@Rule_ID,@ListType_ID,@Values)
END
Run Code Online (Sandbox Code Playgroud)