小编典典

如何在SQL中对字符串进行子字符串

sql

我的数据会像这样

IPDocument/XR/test_20120409_clearGAC.txt
IPDocument/XR/test_20120409_clearGAC_05.txt
IPDocument/XR/test_20120409_clearGAC_01.txt

我想从上面提取 clearGAC.txt 。如何在SQL中使用子字符串?


阅读 199

收藏
2021-04-15

共1个答案

小编典典

我假设您想要_05和_01- 问题尚不清楚。

DECLARE @var VARCHAR(250)

DECLARE @table TABLE ( val VARCHAR(250) )
INSERT  INTO @table
        SELECT  'IPDocument/XR/test_20120409_clearGAC_01.txt'
        UNION ALL
        SELECT  'IPDocument/XR/test_20120409_clearGAC_05.txt'
        UNION ALL
        SELECT  'IPDocument/XR/test_20120409_clearGAC.txt'


SELECT  SUBSTRING(val, CHARINDEX('clearGAC', val), 50),
        SUBSTRING(SUBSTRING(val, CHARINDEX('_', val)+1, 50), CHARINDEX('_', SUBSTRING(val, CHARINDEX('_', val)+1, 50))+1, 50)
FROM    @table

返回此:

clearGAC_01.txt
clearGAC_05.txt
clearGAC.txt

CHARDINDEX中的第三个参数可以大于长度。

编辑: 如果您不知道clearGAC名称是什么,我添加了逻辑

阅读您的评论后,您可能只需要这样:

我将传递ClearGAC.txt并查看它是否在数据库中。该ClearGAC.txt的名称可能与上面的代码相同。

DECLARE @var VARCHAR(250)

DECLARE @table TABLE ( val VARCHAR(250) )
INSERT  INTO @table
        SELECT  'IPDocument/XR/test_20120409_clearGAC_01.txt'
        UNION ALL
        SELECT  'IPDocument/XR/test_20120409_clearGAC_05.txt'
        UNION ALL
        SELECT  'IPDocument/XR/test_20120409_clearGAC.txt'


SELECT  *
FROM    @table
WHERE   val LIKE '%clearGAC%.txt'
2021-04-15