【问题标题】:tsql : how to do a substring replace?tsql:如何进行子字符串替换?
【发布时间】:2011-01-30 10:34:20
【问题描述】:

目标:我有字符串“1234432144”我只想用“10”替换前 2 个 4,所以我会得到“1231032144”

有没有办法在 tsql 中做到这一点?

到目前为止,我已经想出了 tsql substring() 函数

substring('1234432144', 4, 2) 

它绘制了 44 .. 但是我如何在现有字符串中替换它?

如果我在它周围包裹一个替换函数,它会替换字符串中所有出现的 44。

有什么想法吗?

提前致谢。

【问题讨论】:

  • 只替换前2个4的标准是什么?
  • 我只是想要一种方法来替换第一组双 4,而不考虑位置,而不是让它在整个字符串中重复替换。谢谢

标签: sql-server tsql substring


【解决方案1】:

使用参数化版本进行编辑。

DECLARE @myStr VARCHAR(50)
DECLARE @findStr VARCHAR(50)
DECLARE @replaceStr VARCHAR(50)

SET @myStr = '1234432144'
SET @findStr = '44'
SET @replaceStr = '10'

SELECT STUFF(@myStr, CHARINDEX(@findStr, @myStr), LEN(@findStr), @replaceStr)

【讨论】:

  • 当然,如果要求将第一个 4 替换为 1,将第二个 4 替换为 0,而不是将 44 替换为 10,则它不会起作用。在这种情况下,您需要调用该函数两次。
猜你喜欢
  • 2018-01-11
  • 2014-12-11
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多