我能想到的如何在 SQL Server 2008 中计算字符串中的数字的最简单方法是计算原始字符串的长度与剥离所有数字字符 (0..9) 时的长度之间的差异。您的查询可能类似于以下内容:
(LEN(headline) * 10) - LEN(REPLACE(headline, '0', '') +
REPLACE(headline, '1', '') +
REPLACE(headline, '2', '') +
REPLACE(headline, '3', '') +
REPLACE(headline, '4', '') +
REPLACE(headline, '5', '') +
REPLACE(headline, '6', '') +
REPLACE(headline, '7', '') +
REPLACE(headline, '8', '') +
REPLACE(headline, '9', ''))
您应该测试首先计算每个替换或连接字符串的长度然后计算所有字符串的长度是否更快,但是如果您的字符串不是特别长,两种方法在性能方面应该大致相同。另一个更难阅读的不连接的版本可能是:
LEN(headline) -
LEN(REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(headline, '9', ''),
'8', ''),
'7', ''),
'6', ''),
'5', ''),
'4', ''),
'3', ''),
'2', ''),
'1', ''),
'0', ''))
但我不太确定它是否在视觉上更具吸引力(SQL Server 2008 真的可以使用正则表达式)。另一种值得考虑的方法是,如果您需要一种方法来确定字符串中的位数,请参阅此博客。
干杯! ;)