我的数据会是这样
IPDocument/XR/test_20120409_clearGAC.txt
IPDocument/XR/test_20120409_clearGAC_05.txt
IPDocument/XR/test_20120409_clearGAC_01.txt
我想从上面提取clearGAC.txt 。如何在 SQL 中使用子字符串?
我的数据会是这样
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.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'
SELECT SUBSTRING('IPDocument/XR/test_20120409_clearGAC.txt', CHARINDEX('09_','IPDocument/XR/test_20120409_clearGAC.txt')+3, 100)
结果:clearGAC.txt