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

SQL Server 2008:フィールドから部分文字列を選択

    2 つのステップに分けます:

    <オール>
  1. 番号の先頭まですべて破棄します (ここでは、最小 3 桁を想定しています)
  2. 次の数値以外の数字まですべて取得
  3. PATINDEX はゼロを返すため、LEFT の場合は数字が最後にあるため、CASE が必要です

    DECLARE @MyTable TABLE (bigstring varchar(200))
    INSERT @MyTable VALUES ('F:\MassHunter\DATA\6897_Pan_1\QuantResults\6897_Pan_1.batch.bin')
    INSERT @MyTable VALUES ('F:\MassHunter\DATA\6897_Pan_1\QuantResults\6897_Pan_1.batch.bin')
    INSERT @MyTable VALUES ('10914_Excel Short Summary.xls')
    
    SELECT  --assumes number not at end of string
        LEFT(startOf, PATINDEX('%[^0-9]%', startof)-1)
    FROM
        (
        SELECT  --assumed 3 digits minimum
            SUBSTRING(bigstring, PATINDEX('%[0-9][0-9][0-9]%', bigstring), 8000) AS startOf
        FROM
            @MyTable
        ) foo
    



    1. Java1.6およびOracleJDBC14setQueryTimeoutが機能しない

    2. 'Order by'が指定されていない場合、クエリはレコードセットに対してどの順序を選択しますか?

    3. 外部キーが存在する場合にのみドロップします

    4. Mysqlの正確な単語で文字列を検索