2013-07-16 39 views
-5

我想從Taskdescription選項卡獲取URL,並使用名稱URL在其他列中獲取它。現在,我使用這個代碼從列中獲取URL

select 
    c.StreamName AS Category, 
    ProcessInstanceAppianID as jobId, 
    a.ProcessInstanceName, 
    a.ProcessInstanceTargetDate AS TargetDate, 
    a.ProcessInstanceDescription as TaskDescription, 
    b.Name as department, 
    SUBSTRING(ProcessInstanceName, NULLIF(PATINDEX('%[0-9][0-9][0-9][0-9][0-9]%',ProcessInstanceName),0),7) as code 
from InternalUseOnly..ProcessInstance a 
      join InternalUseOnly..Departments b on 
          b.KeyDepartment = a.KeyDepartmentEntered 
         AND b.updoperation < 2 
      join InternalUseOnly..ProcessStream c on 
          c.KeyProcessStream = a.KeyProcessStream 
         and c.updoperation < 2 
where ProcessInstanceCompleted is null 
     and a.KeyProcessStream in (330) 
     and a.updoperation <2 

enter image description here

在此先感謝

+0

你使用什麼引擎? –

+0

我正在使用SQL服務器 – Anoop

回答

3

如果您正在使用SQL Server,那麼這將這樣的伎倆

SELECT substring(ProcessInstanceDescription , charindex('http://', ProcessInstanceDescription), charindex('KeyInstr', ProcessInstanceDescription) - charindex('http://', ProcessInstanceDescription)) 
FROM InternalUseOnly..ProcessInstance; 

這裏是一個SQLFiddle

我們只是說我心情很好今天,這是你需要的代碼。該網址將位於第一列。

select 
    substring(a.ProcessInstanceDescription , charindex('http://', a.ProcessInstanceDescription), charindex('KeyInstr', a.ProcessInstanceDescription) - charindex('http://', a.ProcessInstanceDescription)), 
    c.StreamName AS Category, 
    ProcessInstanceAppianID as jobId, 
    a.ProcessInstanceName, 
    a.ProcessInstanceTargetDate AS TargetDate, 
    a.ProcessInstanceDescription as TaskDescription, 
    b.Name as department, 
    SUBSTRING(ProcessInstanceName, NULLIF(PATINDEX('%[0-9][0-9][0-9][0-9][0-9]%',ProcessInstanceName),0),7) as code 
from InternalUseOnly..ProcessInstance a 
      join InternalUseOnly..Departments b on 
          b.KeyDepartment = a.KeyDepartmentEntered 
         AND b.updoperation < 2 
      join InternalUseOnly..ProcessStream c on 
          c.KeyProcessStream = a.KeyProcessStream 
         and c.updoperation < 2 
where ProcessInstanceCompleted is null 
     and a.KeyProcessStream in (330) 
     and a.updoperation <2 

更新:

關於Invalid length parameter passed to the LEFT or SUBSTRING function.錯誤,這意味着你有地方在ProcessInstanceDescription列,行不適合的格式爲我SUBSTRING()

祝你好運,因爲這是另一個問題,我不會給你解決方案,首先是因爲信息不足,你不合作,顯然不願意自己做一些努力。

+0

您能否將這些行插入到我的查詢中,以便我可以知道您究竟在哪裏放置了這個,並獲得了我想要的 – Anoop

+1

@Anoop我給你答案,你應該把它集成到你想要的任何地方查詢。基本上,我通過編寫這個查詢來爲你完成所有的工作,你應該能夠自己完成** COPY-PASTING **的非常基本的**操作。 –

+0

我同意你的意見,但它是一個非常敏感的代碼,所以我不希望它變壞。所以請幫助我,並將查詢添加到其他查詢,以便我可以相應地工作。我realyy感謝您的幫助 – Anoop