ニーズに合ったソリューションが既にあるようですが、文字列から数字を抽出するために使用するちょっとしたトリックがあり、誰かに役立つと思われます。 FOR XML ステートメントを利用して、明示的なループを回避します。これは、適切なインライン テーブル関数または単純なスカラーになります。好きなことをしてください:)
DECLARE @String varchar(255) = 'This1 Is2 my3 Test4 For Number5 [email protected]'; SELECT CAST(( SELECT CASE --// skips alpha. make sure comparison is done on upper case WHEN ( ASCII(UPPER(SUBSTRING(@String, Number, 1))) BETWEEN 48 AND 57 ) THEN SUBSTRING(@String, Number, 1) ELSE ''END FROM ( SELECT TOP 255 --// east way to get a list of numbers --// change value as needed. ROW_NUMBER() OVER ( ORDER BY ( SELECT 1 ) ) AS Number FROM master.sys.all_columns a CROSS JOIN master.sys.all_columns b ) AS n WHERE Number <= LEN(@String) --// use xml path to pivot the results to a row FOR XML PATH('') ) AS varchar(255)) AS Result
プレ>結果 ==> 1234510