Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 server 我有一个表,该表中的字符串应该按照描述中所示进行拆分_Sql Server - Fatal编程技术网

Sql server 我有一个表,该表中的字符串应该按照描述中所示进行拆分

Sql server 我有一个表,该表中的字符串应该按照描述中所示进行拆分,sql-server,Sql Server,桌子是 create table mtest ( id int, strval varchar(150), strval1 varchar(150) ) insert into mtest values (1, 'a b c d', 'xxyyzzaa') insert into mtest values(2, 'e f', 'ccdd') insert into mtest values(3, 'g h i', 'llmmnn') insert in

桌子是

create table mtest
(
     id int,
     strval varchar(150),
     strval1 varchar(150)
)

insert into mtest 
values (1, 'a b c d', 'xxyyzzaa')

insert into mtest 
values(2, 'e f', 'ccdd')

insert into mtest 
values(3, 'g h i', 'llmmnn')

insert into mtest 
values(4, 'j', 'kk')
答案应该是

1 xx
1 yy
1 zz
1 aa
2 cc
2 dd....
试试这个

DECLARE @mtest TABLE (Id int, strval VARCHAR(150), strval1 VARCHAR(150))
INSERT INTO @mtest 
VALUES
(1,'a b c d','xxyyzzaa'),
(2,'e f','ccdd'),
(3,'g h i','llmmnn'),
(4,'j','kk')

DECLARE @MaxLength INT = (SELECT MAX(LEN(strval1)) FROM @mtest)

;WITH CTE (RowId)
AS
(
    SELECT 1 AS RowId
    UNION ALL
    SELECT RowId + 2 AS Id
    FROM CTE
    WHERE
        RowId < @MaxLength 
)

SELECT
    M.Id,
    M.strval1,          
    SUBSTRING(strval1, C.RowId, 2) AS Result
FROM
    @mtest M CROSS JOIN 
    CTE C
WHERE
    SUBSTRING(strval1, C.RowId, 2) != ''
ORDER BY M.Id

哪个描述?那么,
strval
在任何方面都相关吗?这仅仅是“从strval1中提取每一对字母,并从它们中生成新的一行”吗?你真的不清楚你想要什么。例如,可以通过从strval1返回两个字符对(1和2、3和4等)并忽略strval来实现。或者您可以从strval和strval1返回两个相同的相邻字母对。你也试过什么?
Id      strval1      Result     
------- ------------ ------
1       xxyyzzaa     xx
1       xxyyzzaa     yy
1       xxyyzzaa     zz
1       xxyyzzaa     aa
2       ccdd         dd
2       ccdd         cc
3       llmmnn       ll
3       llmmnn       mm
3       llmmnn       nn
4       kk           kk