任何人都可以解釋爲什麼Replace
函數不能代替所有string_pattern
與string_replacement
?SQL Server替換函數的工作
select REPLACE(' A A A A ',' A ',' B ')
輸出:B A B A
預期輸出:B B B B
select REPLACE('.A.A.A.A.','.A.','.B.')
輸出:.B.A.B.A.
預期輸出:.B.B.B.B.
在上面的查詢中爲什麼只有替代值被替換?
我知道上面的問題可以通過加入來修復一個替換之類的問題。
select replace(REPLACE('.A.A.A.A.A.A.A.A.A.','.A.','.B.'),'.A.','.B.')
但爲什麼單Replace
不替代的string_pattern
與string_replacement
所有發生誰能解釋怎麼回事?
我只能猜測,但也許以後首先替換'A'它不會返回並重新評估整個字符串。在這種情況下,搜索從下一個「A」開始,而不是從第一個A開始。 – 2014-12-13 06:26:43
如果分隔符是一致的,那麼爲什麼不替換而不匹配尾隨空格,例如'select REPLACE('A A A A','A','B')' – 2014-12-13 06:28:44
@ChrisMoutray僅僅是一個例子。那麼選擇REPLACE('.A.A.A.','。A。','。B'')'。我想知道它是如何工作的 – 2014-12-13 06:33:47