另一种方法是删除字符串之后和字符串之前的字符。下面的表达式可以做到这一点:
select val, stuff(stuff(val+'x', patindex('%[0-9][^0-9.]%', val+'x') + 1, len(val), '' ), 1, patindex('%[0-9]%', val) - 1, '')from (values ('test123 xxx'), ('123.4'), ('123.4yyyyy'), ('tasdf 8.9'), ('asdb'), ('.2345')) as t(val);
内部
stuff()删除数字后面的字符。的
+'x'处理时的数量为在字符串的末尾时出现的问题。第一部分处理编号之前的部分。
这确实假定字符串中只有一个数字。您可以使用where子句检查此内容,例如:
where val not like '%[0-9]%[^0-9.]%[0-9]%'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)