【问题标题】:sql str replace problemssql str替换问题
【发布时间】:2013-08-04 17:53:36
【问题描述】:

我一直在尝试替换数据库中大约 100 个 url 条目的列表,但运气不佳。这是我需要做的:

获取当前网址:/one/two/three/four/differenteverytime.pdf 并在其当前条目中将其更新为:/two/three/four/differenteverytime.pdf

每个 URL 都以该模式开头,因此我希望进行大规模更新。

我用 REPLACE 和 str_REPLACE 尝试了许多命令,但无济于事。非常感谢任何帮助,我无法在旧条目中找到直接的答案。

【问题讨论】:

  • 你的意思是每个 url 都以 URL:/one/ 开头还是每个 url 都以 *:/*/ 开头?即,您可以将 'URL:/one/ 替换为空,还是需要删除 *:/*/ 其中 * 可能是 1 到 n 个字符?
  • 是的,我想什么都没有。

标签: sql sybase str-replace


【解决方案1】:

这样的事情怎么样

DECLARE @str VARCHAR(MAX) = '/one/two/three/four/differenteverytime.pdf'


SELECT STUFF(@str, 1, LEN(LEFT(@str, CHARINDEX('/', @str, 2)))-1 , '')

将其用作UPDATE 的一部分,您会这样做

UPDATE tbl
SET col = STUFF(col, 1, LEN(LEFT(col, CHARINDEX('/', col, 2)))-1 , '')

【讨论】:

  • select str_REPLACE (t.url, '/one/two', '/two') FROM dbo.table t 允许我抓取所有按我想要的方式格式化的字符串。但是就地更新它们是我遇到麻烦的部分。
  • 您的意思是在UPDATE 查询(如this)中使用它时遇到问题?
  • @user1672092 附注我会小心使用REPLACE 类型函数,并确保它只替换第一次出现,因为你最终可能会弄乱'/differenteverytime.pdf' 部分
  • 是的,我在将它们用作 UPDATE 的一部分时遇到了问题。这是我的担忧。如果没有数百个条目需要这样做,我会一个一个地做。
  • 所以你只需要像在小提琴中那样做它会更新所有记录demo
猜你喜欢
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 2011-02-14
  • 2013-08-28
  • 2020-08-21
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多