如何在Sql中替换给定的示例?

时间:2011-06-02 15:12:44

标签: sql-server-2005 tsql

我想始终替换string-

中的最后一个节点
root/node1/node2

如果我将node3作为参数传递,它应该像这样替换 -

 root/node1/node3

任何人都可以帮我这么说,列名是血统,我有id。因此,查询将是 -

Update
   tree
set
  lineage= -- replace(lineage,node3)  -- this is what i need  ?
where
  id=2

2 个答案:

答案 0 :(得分:2)

您可以执行一些字符串操作来查找/的最后一次出现,然后在该点之后删除所有内容...然后将新节点参数附加到该值

Update
   tree
set
  lineage = LEFT(Lineage, LEN(Lineage) - CHARINDEX('/', REVERSE(Lineage)) + 1) + @NewNode
where
  id=2

答案 1 :(得分:0)

用户定义的功能。您可以选择T-SQL或.NET语言。我,我自己会选择.NET,因为它能够使用Regex更有效地磨练字符串的最后部分,但是你可以使用T-SQL拆分和重组字符串。这显示了分裂,例如:

http://www.logiclabz.com/sql-server/split-function-in-sql-server-to-break-comma-separated-strings-into-table.aspx