3

以下のクエリがあります。

SQLフィドル

可能な文字数は 7 文字 (- と AZ を組み合わせたもの) のみです

最初の 5 文字 (月曜から金曜) には 1 つの「-」しか使用できません 土曜と日曜には、1 文字またはダッシュのみを使用できます Sa と Su を S だけに置き換えます

ただし、土曜日および/または日曜日に 2 つのダッシュを渡している場合は、それぞれに 1 つのダッシュに置き換える必要があります。

そのため、すべての操作の後、長さは 7 しかありません。

可能な限り試してみましたが、土曜日/日曜日の位置で 2 対 1 のダッシュ シナリオで行き詰まりました。

助けてください!もっと見つけたら、これを更新し続けます。

ADVのTHX

コード:

CREATE Table TempTable (string varchar(50))

INSERT INTO TempTable (string)
VALUES ('MTWRFSS')
       ,('MTWRFSaS')
       ,('MTWRFSaSu')
       ,('----F--')
       ,('----F----')
       ,('MT------')
       ,('MT------')
       ,('----FSa--')
       ,('----FSa-')
       ,('----FS--')
       ,('----FS-')
       ,('----F-Su')
       ,('----F--Su')
       ,('----F-S')
       ,('----F--S')

UPDATE TempTable
SET string =  REPLACE(REPLACE(RTRIM(LTRIM(string)),'SA','S'),'SU','S')

SELECT string 
       ,LEN(String) AS stringLengh FROM TempTable

--DROP TABLE TempTable
4

1 に答える 1

2

MON から FRY までは常に 1 - であるため、5 番目以降の文字のみを操作するようにしてください。だから私はこれがうまくいくと思う:

SELECT 
  string as InitialString
  ,LEFT(LEFT(String,5) + replace(replace(replace(RIGHT(String,LEN(String)-5),
  'Sa','S'),'Su','S'),'--','-') + '--',7) as FinalString
FROM TempTable;

ひもを 2 つにカットする必要があります。残りは 5 つです。次に、いくつかの置換を使用して、正しい土/日の組み合わせを得ることができます。両方を連結すると、最終的な決定が得られます。LEFTまた、さらに 2 つのダッシュを追加する必要があり、 7 つだけ取る必要があり'--'ます'-'

于 2013-11-12T18:01:39.070 に答える