1

助けていただければ幸いです

1 か月の稼働日と休日を表す文字列があります。

 @month_col = 'HHWHHWHWWWHHWWWWWHHWWWWWHHWWWWW' -- H - Holiday, W-Working day, total 31 days

index今月の最終営業日 (この場合は )を取得する必要があり31ます。

または

@month_col = 'HHWHHWHWWWHHWWWWWHHWWWWWHHWWHHH' 

そして最後のウォトキング日は28日。

私は最初の営業日を取得する方法を知っています:

--FIRST WORKING DAY OF MONTH
    WHILE @index<= @len
     BEGIN
     set @char = SUBSTRING(@month_col, @index, 1)
     IF @char = 'W' 
     begin
        select @first_day = CHARINDEX(@char, @month_col)
        break
     end
    SET @index= @index+ 1   
    END

では、最後の 1 つはどうでしょうか。逆に反復しようとしましたが、NULL になりました。前もって感謝します!

4

3 に答える 3

1

これを試して:

MySQL

@month_col = 'HHWHHWHWWWHHWWWWWHHWWWWWHHWWHHH' 

文字列の先頭から文字を検索

SELECT LOCATE('W', @month_col);

出力: 3

文字列の末尾から文字を検索

SELECT LENGTH(@month_col) + 1 - LOCATE('W', REVERSE(@month_col));

出力: 28


SQLサーバー

@month_col = 'HHWHHWHWWWHHWWWWWHHWWWWWHHWWHHH' 

文字列の先頭から文字を検索

SELECT CHARINDEX('W', @month_col, 0);

出力: 3

文字列の末尾から文字を検索

SELECT LEN(@month_col) + 1 - CHARINDEX('W', REVERSE(@month_col), 0);

出力: 28

于 2014-01-23T09:58:56.120 に答える