2016-12-14 67 views
0

我有下面的查询,我需要在'ON'子句中添加另一个条件。
如果我需要包括“ON”,这是SQL查询 - 'ON'子句

i_no = LEFT(replace(right(filename, charindex('\', reverse(filename))-1),'_rprt%[0-9]%.doc', ''), 

一个条款如何实现这一目标?

SELECT (right(filename, charindex('\', reverse(filename))-1)) phyname, 
      replace(filename,(right(filename, charindex('\', reverse(filename))-1)), '') phypath, 
      a_no, 
      i_no 
     from 
      #tempimages 
     inner join 
      imagestatus 
     on 
      i_no = LEFT(replace(right(filename, charindex('\', reverse(filename))-1),'.doc', ''), 
        LEN(replace(right(filename, charindex('\', reverse(filename))-1),'.doc', ''))-3) 

回答

1

如果你想只返回其中两个在你的ON条款的条件,则记录,然后使用AND

SELECT (RIGHT(filename, CHARINDEX('\', REVERSE(filename))-1)) phyname, 
     REPLACE(filename,(RIGHT(filename, CHARINDEX('\', REVERSE(filename))-1)), '') phypath, 
     a_no, 
     i_no 
FROM #tempimages 
INNER JOIN imagestatus ON i_no = LEFT(REPLACE(right(filename, CHARINDEX('\', REVERSE(filename))-1),'.doc', ''),LEN(REPLACE(right(filename, CHARINDEX('\', REVERSE(filename))-1),'.doc', ''))-3) 
        AND i_no = LEFT(REPLACE(right(filename, CHARINDEX('\', REVERSE(filename))-1),'_rprt%[0-9]%.doc', '') 

如果要返回的记录,如果条件要么是遇到,然后使用OR

SELECT (RIGHT(filename, CHARINDEX('\', REVERSE(filename))-1)) phyname, 
     REPLACE(filename,(RIGHT(filename, CHARINDEX('\', REVERSE(filename))-1)), '') phypath, 
     a_no, 
     i_no 
FROM #tempimages 
INNER JOIN imagestatus ON i_no = LEFT(REPLACE(right(filename, CHARINDEX('\', REVERSE(filename))-1),'.doc', ''),LEN(REPLACE(right(filename, CHARINDEX('\', REVERSE(filename))-1),'.doc', ''))-3) 
         OR i_no = LEFT(REPLACE(right(filename, CHARINDEX('\', REVERSE(filename))-1),'_rprt%[0-9]%.doc', '') 
+0

谢谢,如何处理,如果错误引发无效l传递给左侧或子字符串函数的ength参数 –

+0

函数调用不完整 - 在调用LEFT的地方,您的表达式会在第二个参数(要返回的字符数)之前终止。改为:'LEFT(替换(right(filename,charindex('\',reverse(filename)) - 1),'_ rprt%[0-9]%。doc',''),2)'替换'2'在结尾处加上你想要的任意数量的角色。 – 3N1GM4

+0

filenamepath is ='\\ aa \ bb \ cc \ 00121.doc'或我的文件名路径可能是'\\ aa \ bb \ cc \ 00121_rprt001.doc'所以我需要为这两个文件名格式(路径)提取文件名@rprtdelimeter ='_ rprt' right(left(fileName,CHARINDEX(@ rprtdelimeter,fileName)-1),charindex('\',reverse(Left(fileName,CHARINDEX(@ rprtdelimeter,@ fileName)-1))) -1) –