基於 T-SQL String Manipulation Tips and Techniques, Part 1尤其部分Replacing Multiple Contiguous Spaces With a Single Space and idea of Peter Larsson, a SQL Server MVP
:
然後,將溶液包括三個步驟(假設令牌是〜):
- 中的 '@str每次出現'(空格)以 '替換〜'(標記加上空間)。
- 用''(空字符串)替換上一步每次出現'〜'(空格加標記)的結果。
- 用''(空格)替換上一步每次出現'〜'(令牌加空格)的結果。
CREATE TABLE #tab(val NVARCHAR(100));
INSERT INTO #tab
SELECT 'Hello'
UNION ALL SELECT 'Heello'
UNION ALL SELECT 'Heeello'
UNION ALL SELECT 'Heeeello'
UNION ALL SELECT 'Heeeeeello'
UNION ALL SELECT 'Heeeeeeeello'
UNION ALL SELECT 'Heeeeeeeeeello';
-- version for one vowel(it can be enhanced to handle other if needed)
SELECT val,
cleaned = REPLACE(
REPLACE(
REPLACE(
REPLACE(REPLACE(val, REPLICATE('e', 8), '^^')
, 'e', '~ ')
, ' ~', '')
, '~ ', 'e')
,'^^','ee')
FROM #tab;
LiveDemo
輸出:
╔════════════════╦═════════╗
║ val ║ cleaned ║
╠════════════════╬═════════╣
║ Hello ║ Hello ║
║ Heello ║ Hello ║
║ Heeello ║ Hello ║
║ Heeeello ║ Hello ║
║ Heeeeeello ║ Hello ║
║ Heeeeeeeello ║ Heello ║
║ Heeeeeeeeeello ║ Heeello ║
╚════════════════╩═════════╝
所以它總是多封的同一封E取代? – jarlh
是的,這就是或多或少的要求。 – SouravA
[刪除重複的重複字符](http:// stackoverflow。com/questions/5794183/removed-repeated-duplicated-characters) – Bridge