我有一个表中的列数据:
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() 函数