我需要清理表中可能被头部污染的字符串。不需要的字符将以多个字符显示,而有效字符之间可能会出现一些常见字符,而有效字符串以[0-9a-zA-Z]
,\[\]
和下划线开头,但可能包含其他字符,如#@ This_is_.a_[cat]^
,' __process_'data'#
。如何识别我的有效字符串的开始位置?如何识别可能是字母或下划线的字符位置
像
WHILE LEN(@str) > 1 IF PATINDEX([0-9a-zA-Z\[\]_]%, @str) = 0 @str = SUBSTRING(@str,2,999) ELSE --find valid head
或类似PATINDEX([0-9a-zA-Z\[\]_]% ESCAPE _, @str)
的方式,
PATINDEX([0-9a-zA-Z\[\]_]% ESCAPE [_], @str)
,
PATINDEX([0-9a-zA-Z\[\][_]]%, @str)
不起作用(PATINDEX总是= 0)。
你可以添加一些例子:输入字符串和清洗后的预期值? –
@Julien Vavasseur例如'__process_'data'#'作为'__process_'data'#','。 $$ @@#123_456'应该变成'123_456' – a4194304