首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL server 2008中根据长度而不是分隔符拆分数据。

如何在SQL server 2008中根据长度而不是分隔符拆分数据。
EN

Stack Overflow用户
提问于 2010-03-01 14:20:34
回答 2查看 1.4K关注 0票数 0

我有一个拆分数据的查询,但它是基于分隔符的。我的问题是:

代码语言:javascript
复制
DECLARE @xml xml,@str varchar(100),@delimiter varchar(10)
SET @str= 'VINAYKUMAR,VINAYKUMAR,VINAYKUMAR,VINAYKUMAR,VINAYKUMAR,VINAYKUMAR,VINAYKUMAR'
SET @delimiter =','
SET @xml = cast(('<X>'+replace(@str,@delimiter ,'</X><X>')+'</X>') as xml)
select @xml
SELECT a.value('.','varchar(10)') as value FROM @xml.nodes('X') as X(a)

我想根据长度拆分数据,即10个字符。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-01 15:40:00

就像..。(编辑:分隔符现在安全)

代码语言:javascript
复制
DECLARE @str varchar(100)
DECLARE @splitlen tinyint, @hasSeparator bit;

SELECT @str= 'VINAYKUMAR,VINAYKUMAR,VINAYKUMAR,VINAYKUMAR,VINAYKUMAR,VINAYKUMAR,VINAYKUMAR'
SELECT @splitlen = 10, @hasSeparator = 1

;WITH cNumber AS 
(
    SELECT
        ROW_NUMBER() OVER (ORDER BY C1.column_id) * (@splitlen+@hasSeparator) - @splitlen + (1-@hasSeparator) AS Number
    FROM
        sys.columns C1, sys.columns C2
)
SELECT
    SUBSTRING(@str, Number, @splitlen-@hasSeparator)
FROM
    cNumber
WHERE
    Number < LEN (@str)



SELECT @str= 'VINAYKUMARVINAYKUMARVINAYKUMARVINAYKUMARVINAYKUMARVINAYKUMARVINAYKUMAR'
SELECT @splitlen = 10, @hasSeparator = 0
;WITH cNumber AS 
(
    SELECT
        ROW_NUMBER() OVER (ORDER BY C1.column_id) * (@splitlen+@hasSeparator) - @splitlen + (1-@hasSeparator) AS Number
    FROM
        sys.columns C1, sys.columns C2
)
SELECT
    SUBSTRING(@str, Number, @splitlen - @hasSeparator)
FROM
    cNumber
WHERE
    Number < LEN (@str)
票数 1
EN

Stack Overflow用户

发布于 2010-03-01 14:47:33

使用SUBSTRING

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2354193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档