我正在使用.Net 2013,我认为它与SQL Server版本打包在一起。
修改 我理解这个例子很奇怪,这只是我在解决THIS QUESTION时遇到的问题的一个例子
编辑2:
我的预期结果显然不是人们所期望的,所以增加到底部。对不起,感到困惑。
希望最终编辑 我将桌子从Hello World的变化改为Bacon&蛋。 在阅读了几次以确保我非常清楚问题是什么之后,我正在睁大眼睛。将源数据更改为更清晰。问题仍然存在我查了一下。
我有两张桌子。 一个包含一个字符串。 一个包含要替换的字符串,以及它的替换。
*String Table*
Bacon
Eggs
Bacon & Eggs
Eggs & Bacon
*Replacement Table*
Bacon Pork
Eggs Poultry
然后我有一个View进行交叉连接以执行替换,但它无法正常工作。这让我感到困惑,因为它似乎只替换了END处的字符串。请参阅下面的查询结果。
SELECT InitialString, ReplacementTarget, ReplacementValue,
REPLACE(InitialString, ReplacementTarget, ReplacementValue)
AS ReplacedString
FROM StringTable CROSS JOIN ReplacementTable
请注意,只替换文本的后半部分。 它不像第一次更换,然后停止。这至少是有道理的。 这实际上就像替换因某种原因无法验证。
查询结果(标有星号的问题)
InitialString ReplaceTarget ReplaceValue ReplacedString
Bacon Bacon Pork Pork
Eggs Bacon Pork Eggs
Bacon & Eggs Bacon Pork Bacon* & Eggs
Eggs & Bacon Bacon Pork Eggs & Pork
Bacon Eggs Poultry Bacon
Eggs Eggs Poultry Poultry
Bacon & Eggs Eggs Poultry Bacon & Poultry
Eggs & Bacon Eggs Poultry Eggs* & Bacon
。 预期结果(是的,我想要8回去。看看上面的链接) (用星号表示的变化)
InitialString ReplaceTarget ReplaceValue ReplacedString
Bacon Bacon Pork Pork
Eggs Bacon Pork Eggs
Bacon & Eggs Bacon Pork Pork* & Eggs
Eggs & Bacon Bacon Pork Eggs & Pork
Bacon Eggs Poultry Bacon
Eggs Eggs Poultry Poultry
Bacon & Eggs Eggs Poultry Bacon & Poultry
Eggs & Bacon Eggs Poultry Poultry* & Bacon
对此问题的任何帮助或见解将不胜感激。 :)
答案 0 :(得分:1)
好的,这很愚蠢/好笑。一位朋友问我是否使用TRIM()
SELECT InitialString, ReplacementTarget, ReplacementValue,
REPLACE(InitialString, RTRIM(ReplacementTarget), RTRIM(ReplacementValue))
AS ReplacedString
FROM StringTable CROSS JOIN ReplacementTable
事后看来,这是完美的感觉。只有TRAILING目标具有必需的尾随空格!