sql >> データベース >  >> RDS >> Sqlserver

TSQL を使用して文字列から数値を抽出する方法

    ニーズに合ったソリューションが既にあるようですが、文字列から数字を抽出するために使用するちょっとしたトリックがあり、誰かに役立つと思われます。 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



    1. MySQLは、idが指定された数より大きいすべての行を削除します

    2. MySQLのルートパスワードをリセットする

    3. PHPMySQLiOOPでの->と::の違い

    4. DjangoをSQLiteからPostgreSQLに変換する