更新唯一列部分字符串SQL

时间:2017-09-17 22:53:23

标签: sql

我有一个在列中有用户名的表。这是一个例子

| **Path**                           
| /test/path/Barry/home  
| /test/path/Jenny/home  
| /test/path/Jermehiam/home/Docs  
| /test/path/Sarah/home/Docs

我不确定如何只更新以'home'结尾的路径部分。我需要保留路径的其他部分,因为我要替换的字符串是环境变量。所以最终的结果是:

| **Path**                           
| ${PATH}  
| ${PATH}  
| ${PATH}/Docs  
| ${PATH}/Docs

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

你可以这样做:

UPDATE PathTable
SET Path = '...'
WHERE Path LIKE '/test/path/%/home'

UPDATE PathTable
SET Path = '.../Docs'
WHERE Path LIKE '/test/path/%/home/Docs'

答案 1 :(得分:0)

如果您使用的是SQL-Server,可以使用CHARINDEX(),SUBSTRING()和LEN()

SELECT CASE WHEN CHARINDEX('home',url) = 0
            THEN url
            ELSE '${PATH}' + SUBSTRING(url, (CHARINDEX('home',url) + 4), LEN(url) - (CHARINDEX('home',url) + 3))
        END url
  FROM t_link
在Oracle中,您可以使用INSTR(),SUBSTR()和LENGTH()

SELECT CASE WHEN CHARINDEX('home',url) = 0
            THEN url
            ELSE '${PATH}' + SUBSTRING(url, (CHARINDEX('home',url) + 4), LEN(url) - (CHARINDEX('home',url) + 3))
        END url
  FROM t_link

结果

url
 **Path**                           
${PATH}
${PATH}
${PATH}/Docs
${PATH}/Docs