我有一个varchar(200)列,其中包含以下条目,
ABC123124_A12312
ABC123_A1212
ABC123124_B12312
AC123124_AD12312
A12312_123
ETC..
我想用单个数字替换一系列数字,*
以便可以对表中不同的非数字模式进行分组。
这组的结果是
ABC*_A*
ABC*_B*
AC*_AD*
A*_*
我在下面编写了以下原始查询,它可以正常工作,但是在一个巨大的表上运行需要很长时间。
我需要帮助来重写或编辑它以提高它的性能。SQL Server 2014
-- 1. replace all numeric characters with '*'
-- 2. replace multiple consecutive '*' with just a single '*'
SELECT REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE(SampleID, '0', '*'),
'1', '*'),
'2', '*'),
'3', '*'),
'4', '*'),
'5', '*'),
'6', '*'),
'7', '*'),
'8', '*'),
'9', '*')
, '*', '~*') -- replace each occurrence of '*' with '~*' (token plus asterisk)
, '*~', '') -- replace in the result of the previous step each occurrence of '*~' (asterisk plus token) with '' (an empty string)
, '~*', '*') -- replace in the result of the previous step each occurrence of '~*' (token plus asterisk) with '*' (asterisk)
AS Pattern
FROM TABLE_X
数据
该列包括字母和数字[A-Za-z0-9]
,还可能包括特殊字符/
和_
. 我想用 替换任何数字序列*
,但我不知道该条目是否有特殊字符,如果有,有多少特殊字符。
我也不知道条目中有多少个数字序列。我所知道的是,一个条目必须至少有 1 个数字序列。