Как получить значение после определенного количества точек в результате запроса SQL-сервера

У меня есть один из данных столбца в таблице как:

123.88568.30959300.001.NBIS.07-28-17.XML

Из этих данных я хочу значение после 3-х точек, как 001, Длина значений будет варьироваться. Я попытался с помощью функции подстроки, но я получаю только первое значение, т.е. 123,

1 ответ

Это работает для SQL-сервера

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()

Другие вопросы по тегам