SQL服务器替换功能错误?
SQL Server replace function bug?
我在下面的语句中遗漏了什么吗?
select replace('xAxAxAx', 'xAx', 'xBx')
因为它导致:
xBxAxBx
这是已知错误还是我遗漏了一些基本信息?
Microsoft 表示 replace
函数:
Replaces all occurrences of a specified string value with another
string value.
这里不是第二个xAx
吗?
不,第二个 xAx
不是偶然事件。一次出现不能与另一次出现重叠,因此字符串中只有两次出现 xAx
:
'xAx' + 'A' + 'xAx'
想想你是否做了这样的替换,这样就更清楚了:
replace('xAxAxAx', 'xAx', '-B-')
如果第二个xAx
算作一次出现,替换第一次出现后,字符串会是-B-xAxAx
吗?第一个 xAx
和第二个 xAx
之间共享的 x
是否会被复制,以便在两次出现时都可以替换它?不过,这会使结果 -B--B--B-
而不是 -B-B-B-
.
这只是定义什么是事件以及如何处理重叠实例的问题。这正是我期望它工作的方式,因为处理一次出现的数据意味着 'xAxAxAx' 是 xAx + A + xAx - 无论第一个替换的结果是什么,都不被视为新出现,因此那些 2 被替换。
同样replace ('xx', 'x', 'xx')的结果是xxxx,不是xxxxxxxxxx....
我在下面的语句中遗漏了什么吗?
select replace('xAxAxAx', 'xAx', 'xBx')
因为它导致:
xBxAxBx
这是已知错误还是我遗漏了一些基本信息?
Microsoft 表示 replace
函数:
Replaces all occurrences of a specified string value with another string value.
这里不是第二个xAx
吗?
不,第二个 xAx
不是偶然事件。一次出现不能与另一次出现重叠,因此字符串中只有两次出现 xAx
:
'xAx' + 'A' + 'xAx'
想想你是否做了这样的替换,这样就更清楚了:
replace('xAxAxAx', 'xAx', '-B-')
如果第二个xAx
算作一次出现,替换第一次出现后,字符串会是-B-xAxAx
吗?第一个 xAx
和第二个 xAx
之间共享的 x
是否会被复制,以便在两次出现时都可以替换它?不过,这会使结果 -B--B--B-
而不是 -B-B-B-
.
这只是定义什么是事件以及如何处理重叠实例的问题。这正是我期望它工作的方式,因为处理一次出现的数据意味着 'xAxAxAx' 是 xAx + A + xAx - 无论第一个替换的结果是什么,都不被视为新出现,因此那些 2 被替换。
同样replace ('xx', 'x', 'xx')的结果是xxxx,不是xxxxxxxxxx....