如何获取 SQL Server 查询结果中特定数量的点后的值

如何获取 SQL Server 查询结果中特定数量的点后的值

我有一个表中的列数据:

123.88568.30959300.001.NBIS.07-28-17.XML

从这些数据中,我想要一个 3 点后的值,例如001。值的长度会有所不同。我尝试使用子字符串函数,但只得到第一个值,即123

答案1

这适用于 SQL-Server

DECLARE @str NVARCHAR(MAX)='123.88568.30959300.001.NBIS.07-28-17.XML'
DECLARE @start int = 0
DECLARE @end int = 0

SET @start = CHARINDEX('.', @str, CHARINDEX('.', @str, CHARINDEX('.', @str)+1)+1) +1
SET @end = CHARINDEX('.', @str, @start)

SELECT SUBSTRING(@str, @start, @end - @start)

在 MySQL 中,您可以这样做。

SET @str = "123.885568.309159300.001.NBIS.07-28-17.XML";
SELECT SUBSTRING_INDEX((SUBSTRING_INDEX(@str, ".", 4)), ".", -1); 


进一步阅读
-SQL Server CHARINDEX() 函数
-SQL Server SUBSTRING() 函数 -MySQL SUBSTRING_INDEX() 函数

相关内容