Как сделать замену для данного примера в Sql? - PullRequest
2 голосов
/ 02 июня 2011

Я хочу всегда заменять последний узел в строке-

root/node1/node2

Если я передам node3 в качестве параметра, он должен выполнить замену следующим образом -

 root/node1/node3

Может кто-нибудь помочь мне сделать это, скажем, имя столбца было происхождением, и у меня есть идентификатор. Итак, запрос будет -

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

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Вы можете выполнить некоторые манипуляции со строками, чтобы найти последнее вхождение /, а затем удалить все после этой точки ... и затем добавить новый параметр узла к этому значению

Update
   tree
set
  lineage = LEFT(Lineage, LEN(Lineage) - CHARINDEX('/', REVERSE(Lineage)) + 1) + @NewNode
where
  id=2
0 голосов
/ 02 июня 2011

Определяемая пользователем функция.У вас есть выбор языков 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...