2015-05-26 91 views
1

我是sql查詢的新手。我正在嘗試執行下面的操作,並且無法成功實現此功能。任何一點都會有幫助。 Table with name and aliasSql查詢更新包含其他列數據的列

  1. 我有一個名爲列和別名列的表。
  2. 有幾個名稱與別名包括在其中
  3. 我想要文件夾名稱中包含該列的別名。這些別名應該與同一行中的別名列匹配。
  4. 獲取所有名稱中包含別名並從名稱中刪除別名的名稱。

我想從更新查詢的sql表中刪除別名。

select * from tbltest 
    where studentName like CONCAT('%', alias, '%') 

    UPDATE tbltest SET studentName = REPLACE(studentName, CONCAT('%', alias, '%')); 
+1

? –

+0

是的,它們與別名列相同。名稱列包含一些記錄與別名串聯的數據。我正嘗試從名稱列數據中刪除這些別名。這是測試數據。原始記錄數超過測試數據。 – Kurkula

回答

1

如果所有別名都嵌入到了顯示的格式中,那麼除去它們以及可以使用的括號。

UPDATE tbltest 
SET studentName = REPLACE(studentName, CONCAT('(', alias, ')'), '') 
WHERE studentName LIKE CONCAT('%(', alias, ')%') 

添加情況下在括號中的所有別名,如圖CONCAT不工作

UPDATE tbltest 
SET studentName = REPLACE(studentName, '('+ alias+ ')', '') 
WHERE studentName LIKE ('%('+ alias+ ')%') 
+0

我試圖測試更新語句,但它顯示'CONCAT'不是一個公認的內置函數名稱。我使用SQL 2012.任何建議 – Kurkula

+1

@Chandana無論服務器未使用2012年或兼容級別必須更低。只需使用'+'。 –

+0

非常感謝你的指針。我用+ case更新了答案。 – Kurkula