,我能想到的如何在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中真的可以使用正則表達式)。另一種方法值得考慮,如果需要一種方法來確定字符串is described in this blog中的數字位數。
乾杯! ;)
更新的問題來解釋更多 – 2013-02-09 11:20:51
是固定的3,還是你打算尋找更多的數字?有一種黑客可以讓你這樣做,但表達式需要改變。 – dasblinkenlight 2013-02-09 11:21:52
它可以是任意數字的數字,但將其固定爲3或4以找到簡單的解決方案將是很好的 - 但它需要高效,因爲我需要在具有數百萬行的表上運行它 – 2013-02-09 11:24:36