我有一个SQL Server 2008 R2表,其中有一列存储仅用于注释目的的路径名。该列名为DESCRIPTION
,看起来有点像这样:
X1200/Redbridge_2/edf0192
我必须删除上面的中间部分(本例中的/Redbridge_2
部分,尽管名称各不相同)。但是,我只想对从X1200
开始的记录执行此操作。我无法找到如何在SQL Server 2008 R2中运行查询以仅删除初始/
之后的数据,并且仅删除第二个/
。我真的很感激任何帮助。
顺便说一下,表名是PAR
。
答案 0 :(得分:1)
使用字符串函数的组合我认为此查询将执行您想要的操作:
UPDATE your_table
SET DESCRIPTION = LEFT(DESCRIPTION, CHARINDEX('/',DESCRIPTION,0)) + SUBSTRING(DESCRIPTION, CHARINDEX('/',DESCRIPTION, CHARINDEX('/',DESCRIPTION,0)+1), LEN(DESCRIPTION))
WHERE LEFT(description, 5) = 'X1200'
这会将您的示例字符串更改为X1200//edf0192
。
可能有更好的方法来做到这一点。如果要在应用更新之前查看行的外观,可以将其作为select语句运行:
SELECT LEFT(DESCRIPTION, CHARINDEX('/',DESCRIPTION,0)) + SUBSTRING(DESCRIPTION, CHARINDEX('/',DESCRIPTION, CHARINDEX('/',DESCRIPTION,0)+1), LEN(DESCRIPTION))
FROM your_table
WHERE LEFT(description, 5) = 'X1200'