我有一个返回输出的SQL查询;我需要在最后一次出现时得到子字符串,我很困惑,无法找到如何做到这一点:
SELECT
spsetuppath,
SUBSTRING(spsetuppath, 0, (LEN(spsetuppath) - CHARINDEX('\', RTRIM(LTRIM(REVERSE(spsetuppath))))) + 1)
FROM
UMRdb..sql_spversion
WHERE
bitversion = '64'
AND productversion = ' 10.50.2500.0'
此命令的输出如下
对于最后一列,我需要exe之前的路径,我只需要exe文件名 - 怎么做?
所以输出我期待看起来像这样
SQLServer2008R2SP1-KB2528583-x64-ENU.exe
答案 0 :(得分:0)
这可以帮到你:
SELECT
spsetuppath,
SUBSTRING(spsetuppath, CHARINDEX('\', RTRIM(LTRIM(REVERSE(spsetuppath)))) - 1, 150)
FROM
UMRdb..sql_spversion
WHERE
bitversion = '64'
AND productversion = ' 10.50.2500.0'
示例:
DECLARE @string varchar(256) = '\\blablabla\dbms\MSSQL\SQL SERVER 2008\SQLServer2008R2SP1-KB2528583-x64-ENU.exe'
SELECT SUBSTRING(@string, CHARINDEX('\', RTRIM(LTRIM(REVERSE(@string)))) - 1, 150)
编辑:如果您想避免SUBSTRING
功能,请使用此功能:
DECLARE @string varchar(256) = '\\blablabla\dbms\MSSQL\SQL SERVER 2008\SQLServer2008R2SP1-KB2528583-x64-ENU.exe'
SELECT REVERSE(LEFT(REVERSE(@string),CHARINDEX('\', RTRIM(LTRIM(REVERSE(@string)))) - 1))
答案 1 :(得分:0)
选择正确(spsetuppath,charindex('\',reverse(spsetuppath)+'\') - 1)来自UMRdb..sql_spversion,其中bitversion ='64'和 productversion = '10.50.2500.0'
这很棒。