我的TBL_Documents
表中有一条这样的路径:
Uploads/Documents/6093/12/695-Graco-SW_5-15-19.pdf
我需要将其与正在上传的文件进行比较,该文件看起来像这样:
695-Graco-SW_5-15-19.pdf
我想将表中的路径与上传的文件名进行比较。我尝试在第一个substring()
的右上角使用/
,但是我并没有真正了解子字符串的工作原理。例如,我尝试这样做:
select substring(right(path,1),1,1) as path from TBL_DOCUMENT
但这只是从右边开始给我的第一个字符。我希望能看到最后/
个字符之后的所有内容。
我该怎么做?
答案 0 :(得分:2)
我将使用一种方法来从右边查找需要使用多少个字符。我将通过首先反转字符串然后搜索“ /”来做到这一点。这将从右边告诉您多少个字符。然后,我将在tail
函数中使用它:
MS SQL Server 2017架构设置:
查询1 :
RIGHT
Results :
DECLARE @documentName varchar(100) = 'Uploads/Documents/6093/12/695-Graco-SW_5-15-19.pdf'
SELECT RIGHT(@documentName, CHARINDEX('/',REVERSE(@documentName))-1)
答案 1 :(得分:0)
RIGHT(path,1)
表示您需要路径字符串右边的[1]字符或'f'。
然后,将'f'包裹在子字符串中,要求从字符串的第[1]个位置开始输入[1]个字符。由于传递给子字符串的表达式返回'f',因此您的子字符串也返回'f'。
您想使用charindex和reverse的组合来适当地处理它。
SUBSTRING(path,len(path) - charindex('/',reverse(path)))
。那不会解析,但是应该可以让您走上正确的轨道。
通常来说,这将从路径的最右边的“ /”开始到字符串的结尾返回字符串。