Sql 如何获取两个不同字符之间的值

Sql 如何获取两个不同字符之间的值,sql,sql-server,Sql,Sql Server,我有一根长度不同的绳子。例如,这些值是: \\gogbg\statements\invoices\2020\02\02\343554.csv \\gogbg\statements\invoices\2019\02\04\90654324.csv 我需要之前和\之后的值,例如343554和90654324 使用SQL Server-如何检索这些值?您可以尝试以下方法(例如,可以将其放入标量值函数中): 这将返回所需的值-343554假定您在一列中有该值。如果字符串始终以“.csv”结尾,则简单的

我有一根长度不同的绳子。例如,这些值是:

\\gogbg\statements\invoices\2020\02\02\343554.csv
\\gogbg\statements\invoices\2019\02\04\90654324.csv
我需要
之前和
\
之后的值,例如
343554
90654324


使用SQL Server-如何检索这些值?

您可以尝试以下方法(例如,可以将其放入标量值函数中):


这将返回所需的值-
343554

假定您在一列中有该值。如果字符串始终以“.csv”结尾,则简单的方法是:

select t.*,
       replace(right(t.str, charindex('\', reverse(t.str)) - 1), '.csv', '')
from (values ('\\gogbg\statements\invoices\2020\02\02\343554.csv'),
             ('\\gogbg\statements\invoices\2019\02\04\90654324.csv')
     ) t(str) ;
对于变量后缀,可以使用:

select t.*,
       left(v.ending, charindex('.', v.ending) - 1)
from (values ('\\gogbg\statements\invoices\2020\02\02\343554.csv'),
             ('\\gogbg\statements\invoices\2019\02\04\90654324.csv')
     ) t(str) cross apply
     (values (right(t.str, charindex('\', reverse(t.str)) - 1))) v(ending);

是一个傻瓜。

在这个网站上,你应该尝试一下,然后发布你的尝试。@AutumnSunflower:如果你觉得这个答案帮助你解决了你的问题,那么请。这将表达你对那些花自己的时间帮助你的人的感激之情。
select t.*,
       left(v.ending, charindex('.', v.ending) - 1)
from (values ('\\gogbg\statements\invoices\2020\02\02\343554.csv'),
             ('\\gogbg\statements\invoices\2019\02\04\90654324.csv')
     ) t(str) cross apply
     (values (right(t.str, charindex('\', reverse(t.str)) - 1))) v(ending);