У меня есть столбец версии приложения в одной из моих таблиц. Большинство значений являются стандартными версиями, например 2020.2.0, но на некоторых из них есть предварительные теги (2020.2.0.PR).
Следующее возвращает последнюю запись в таблице:
SELECT version
from dbo.server_log_entry
where server_log_entry_id = (SELECT MAX(server_log_entry_id) from dbo.server_log_entry)
В этом случае он возвращает:
2020.2.0.PR
Я работаю над скриптом, который сравнит последнюю версию в таблицу БД к версии в файле, чтобы убедиться, что они совместимы. Сценарий берет версию из файла и преобразует ее в объект [версия]. Я хотел бы иметь запрос PowerShell к базе данных и извлекать значение для объекта версии, однако у меня возникли проблемы с удалением '.' перед тегом PR. В настоящее время у меня есть:
DECLARE @databaseVersion NVARCHAR(30)
SET @databaseVersion = (SELECT version from dbo.server_log_entry where server_log_entry_id = (SELECT MAX(server_log_entry_id) from dbo.server_log_entry))
SELECT LEFT(SUBSTRING(@databaseVersion, PATINDEX('%[0-9.-]%', @databaseVersion), 8000),
PATINDEX('%[^0-9.-]%', SUBSTRING(@databaseVersion, PATINDEX('%[0-9.-]%', @databaseVersion), 8000) + 'X') -1)
Это даст мне значение
2020.2.0.
Я бы хотел удалить окончание период, поэтому запрос возвращает
2020.2.0
, однако я не совсем уверен, как это сделать, или если я собираюсь сделать это неправильно.