SQL:选择字符串中空格前的最后一个值

SQL:选择字符串中空格前的最后一个值,sql,Sql,我有一组字符串,如下所示: CAP BCP0018 36 MFP ACZZ1BD 265 LZP FEI-12 3 我只需要从右边和空格前提取最后的值,如: 36 265 3 select语句是什么样子的?我试着使用下面的语句,但不起作用 select CHARINDEX(myField, ' ', -1) FROM myTable; SQL Server中最简单的方法可能是: select t.*, v.value from t cross apply (select top

我有一组字符串,如下所示:

CAP BCP0018 36
MFP ACZZ1BD 265
LZP FEI-12 3
我只需要从右边和空格前提取最后的值,如:

36
265
3
select语句是什么样子的?我试着使用下面的语句,但不起作用

select CHARINDEX(myField, ' ', -1)
FROM myTable;

SQL Server中最简单的方法可能是:

select t.*, v.value
from t cross apply
     (select top (1) value
      from string_split(t.col, ' ') 
      where t.col like concat('% ', val)
     ) v;
这也许不是最有效的方法。您可能会使用:

select right(t.col, charindex(' ', reverse(t.col)) - 1)
注意:如果没有空格,则为防止出现错误:

select right(t.col, charindex(' ', reverse(t.col) + ' ') - 1)
既然您提到了CHARINDEX,我假设您使用的是SQL Server。 试试下面

declare @table table(col varchar(100))
insert into @table values('CAP BCP0018 36')
insert into @table values('MFP ACZZ1BD 265')
insert into @table values('LZP FE-12 3')

SELECT REVERSE(LEFT(REVERSE(col),CHARINDEX(' ',REVERSE(col)) - 1)) FROM @table
使用的功能

:返回表达式在另一个表达式中首次出现的位置

:返回具有指定字符数的字符串的左侧部分


:返回字符串值的相反顺序

使用正在使用的数据库标记问题。