i有一个表,其中包含图像的列,该列存储图像的链接。
示例看起来像这样:
\Images/image1.jpg
现在假设我的数据库具有1000张图像的1000多个记录,但是由于某些要求更改,我必须更新链接。
我想通过SQL查询从所有1000个记录中删除第一个斜线。
现在是这样存储的:
\Images/image1.jpg
我想将其转换为
Images/image1.jpg
一种方法是转到1000个记录并一一删除它,这太耗时了,作为替代方案,可以通过SSMS运行的SQL查询?
您可以使用REPLACE
来做到这一点:
update yourTable
set yourColumn = replace(yourColumn,'\','')
仅更新以" \"开头的值,您可以做
UPDATE someTable SET col = REPLACE(col, '\%', '')
这应该在MS SQL上进行。
SELECT SUBSTRING(path, 2, LEN(path) - 1) FROM yourtable
编辑:
UPDATE yourtable
SET path = SUBSTRING(path, 2, LEN(path) - 1)
WHERE SUBSTRING(path, 1, 2) = '\'
如果您只是想像这样获取数据集,请尝试在选择查询中使用正确的函数;您的查询应该看起来像这样;
SELECT RIGHT(path, LEN(path)-1) FROM yourtable
如果要使用更新值更新表,而不是使用更新查询,则应看起来像这样;
UPDATE yourtable SET path = RIGHT(path, LEN(path)-1) FROM yourtable
我不会为此目的使用替换!您想删除第一个斜线,replace()
替换了字符串中到处的所有匹配值。
plus,SQL Server具有非常简单的功能:
update t
set col = stuff(col, 1, 1, '')
where col like '\%';