![如何获取 SQL Server 查询结果中特定数量的点后的值](https://linux22.com/image/1600059/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%20SQL%20Server%20%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%E4%B8%AD%E7%89%B9%E5%AE%9A%E6%95%B0%E9%87%8F%E7%9A%84%E7%82%B9%E5%90%8E%E7%9A%84%E5%80%BC.png)
我有一个表中的列数据:
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() 函数