如何使用在SQL Server中替换未知长度的字符?

时间:2015-06-09 14:40:39

标签: sql-server sql-server-2008 tsql

如何替换SQL Server中的一系列句点?如果一个字段有一个以上的句点彼此相邻,那么我想用星号替换它们。问题是我想用2,3,4星号来做这个。我永远不会知道会有多少个时期。有些用户输入两个,有些用户输入十个。

何时替换或删除:

  • 如果彼此相邻的时间段不止一个,我想用星号替换它们。

  • 如果句点是该字段中唯一要删除的字符。

我的Select语句如下:

SELECT CAST(QTEXT + ' ' AS VARCHAR(MAX))FROM MYTABLE WHERE CMPNO = @compID AND Q5XY = 'NDT' FOR XML PATH ('')

1 个答案:

答案 0 :(得分:4)

成对替换句点并针对奇数个句点进行调整:

 select replace ( replace (replace (qtext, '..', '**'), '*.', '**' ), '.', '')
   from ...
      ;

单个句点(=没有相邻句点)在前两个替换后保持不变,并被第三个replace调用删除。