我的数据会像这样
IPDocument/XR/test_20120409_clearGAC.txt IPDocument/XR/test_20120409_clearGAC_05.txt IPDocument/XR/test_20120409_clearGAC_01.txt
我想从上面提取 clearGAC.txt 。如何在SQL中使用子字符串?
我假设您想要_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
阅读您的评论后,您可能只需要这样:
我将传递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'