如何使用4个相同的连续字符在SQL中生成子字符串
我想将子字符串如何使用4个相同的连续字符在SQL中生成子字符串,sql,sql-server,Sql,Sql Server,我想将子字符串11.1.2.3.4.5或10.1.2.4.5等拆分到4(点),就像11.1.2.3和10.1.2.3一样 有人能在SQL中帮助实现这一点吗?您可以使用如下递归CTE CREATE TABLE Strings( S VARCHAR(25) ); INSERT Strings VALUES ('1.2.3.4.5.6'), ('11.2.12.5.66'), ('y.888.p.666.2.00'); WITH CTE AS ( SELECT 1 N, CHARINDEX('
11.1.2.3.4.5
或10.1.2.4.5
等拆分到4(点),就像11.1.2.3
和10.1.2.3
一样
有人能在SQL中帮助实现这一点吗?您可以使用如下递归CTE
CREATE TABLE Strings( S VARCHAR(25) );
INSERT Strings VALUES
('1.2.3.4.5.6'),
('11.2.12.5.66'),
('y.888.p.666.2.00');
WITH CTE AS
(
SELECT 1 N, CHARINDEX('.', S) Pos, S
FROM Strings
UNION ALL
SELECT N + 1, CHARINDEX('.', S, Pos + 1), S
FROM CTE
WHERE Pos > 0
)
SELECT S, SUBSTRING(S, 1, Pos - 1) --or use LEFT()
FROM CTE
WHERE N = 4;
或者使用嵌套的CHARINDEX()
作为
SELECT S, LEFT(S, CI-1)
FROM Strings
CROSS APPLY
(
VALUES
(CHARINDEX('.', S, CHARINDEX('.', S, CHARINDEX('.', S, CHARINDEX('.', S)+1)+1)+1))
) T(CI)
这里有一个欢迎来到StackOverflow!你的问题需要一些工作,以便社区能够更好地帮助你。请看一看并再试一次。您尝试使用
子字符串
时没有成功的地方是什么?