2016-09-26 60 views
0

我需要使用內部連接檢索記錄。從內部連接中獲取值

在表中,

table1.newfld值sath1
table2.domainname值domnInd/sath1

SELECT table1.id,table1.newfld, table2.id 
            FROM table 1 
            INNER JOIN table2 
            ON table1.newfld = table2.domainname; 

我怎麼能檢查與domnInd/sath1 sath1價值?我如何使用拆分table2.domainname並檢查第二部分。因爲在斜槓後面的table2.domainname中它有共同的值。

+0

使用'charindex'。 – Wanderer

回答

0

使用REVERSE,CHARINDEX,RIGHT

REVERSE:爲您提供了相反的順序給定的字符串。

CHARINDEX:爲您提供了字符串中匹配字符的第一個索引。

RIGHT:從右側方向

Declare @domainName VARCHAR(50)='domnInd/sath1' 

SELECT REVERSE(@domainName) 
SELECT CHARINDEX('/',REVERSE(@domainName),0) 
SELECT RIGHT(@domainName,CHARINDEX('/',REVERSE(@domainName),0)-1) 

SELECT 
    T1.id, 
    T1.newfld, 
    T2.id 
FROM table1 AS T1 
INNER JOIN table2 AS T2 ON T1.newfld = RIGHT(T2.domainname,CHARINDEX('/',REVERSE(T2.domainname),0)-1) 
0

使用CHARINDEX給串的一部分。

查詢

SELECT t1.id, t1.newfld, t2.id 
FROM table1 t1 
JOIN table2 t2 
ON t1.newfld = RIGHT(t2.domainname, CHARINDEX('/', REVERSE(t2.domainname), 1) -1); 
0

嘗試......

SELECT table1.id,table1.newfld, table2.id 
      FROM table 1 
      INNER JOIN table2 
      ON table1.newfld = substring(table2.domainname,CHARINDEX('/',table2.domainname)+1,len(table2.domainname) - 1); 
+0

出現以下錯誤:傳遞給LEFT或SUBSTRING函數的長度參數無效。 – User

+0

你在那個領域有空嗎? – Sankar

+0

不.. .. @sankarraj – User

0

如果你只是要檢查是否table1.newfld存在於table2.domainname,你可以用做LIKE

SELECT table1.id,table1.newfld, table2.id 
FROM table 1 
INNER JOIN table2 
ON table2.domainname like '%' + table1.newfld + '%'; 

這將檢查table2.domainname並且如果table1.newfld存在於任何地方,它將選擇該記錄。

0

嘗試此..

PARSENAME是專門設計來解析SQL對象名稱。

SELECT table1.id,table1.newfld, table2.id 
       FROM table 1 
       INNER JOIN table2 
       ON table1.newfld =PARSENAME(REPLACE(t2.domainname,'/','.'), 1) 

對於裁判:More description of parse name

0

使用STUFF:

SELECT table1.id,table1.newfld, table2.id 
    FROM table 1 
    INNER JOIN table2 
    ON table1.newfld = STUFF(table2.domainname, 1, CHARINDEX('/',table2.domainname), '')