我有/ home / docs / test1的columnA。我希望其他列(columnB)仅填充test1。我想为整张桌子做这件事。
答案 0 :(得分:0)
你可以在这里使用反向技巧:
UPDATE yourTable
SET columnB = REVERSE(SUBSTRING(REVERSE(columnA),
1, CHARINDEX('/', REVERSE(columnA)) - 1));
如果某些路径可能只是一个级别,即没有路径分隔符/
存在,那么和你想要保留整个路径,那么你可以稍微修改以上内容:
UPDATE yourTable
SET columnB = CASE WHEN CHARINDEX('/', columnA) > 0
THEN REVERSE(SUBSTRING(REVERSE(columnA),
1, CHARINDEX('/', REVERSE(columnA)) - 1))
ELSE columnA END;
这是一个演示,表明上述逻辑有效:
答案 1 :(得分:0)
如果你需要最后一个元组,那么上面就可以了。但如果需要随机,那么下面的查询将有助于使其分裂。
DECLARE @Var_xml XML
SELECT @Var_xml = Cast('<root><x>'+ Replace('/home/docs/test1', '/', '</x><x>')+ '</x></root>' AS XML)
SELECT DISTINCT f.x.value('.', 'VARCHAR(100)') AS tupple
FROM @Var_xml.nodes('/root/x') f(x)