我的一个表中有一个应用程序版本列。大多数值都是标准版本,比如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.公共关系
我正在编写一个脚本,将db表中的最新版本与文件中的版本进行比较,以确保两者兼容。脚本获取文件中的版本并将其转换为[version]对象。我想对数据库进行powershell查询,并将值拉入version对象,但是在删除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
然而,我不太清楚如何做到这一点,或者如果我这样做的方式是错误的。
3条答案
按热度按时间2uluyalo1#
经过一番尝试/错误后,我发现下面的方法是我所需要的
jtjikinw2#
也许
REPLACE( ver, '.PR','')
```SELECT replace( version, '.PR','')
from dbo.server_log_entry
where server_log_entry_id = (SELECT MAX(server_log_entry_id) from dbo.server_log_entry)
zd287kbt3#
您可以使用reverse和charindex来获得结果。
2020.2.0