特定の文字列フィールドをインターセプトし、フィールドを構築し、mysql で型変換する

1. 要件:

テーブル構造は次のとおりです。
ここに画像の説明を挿入します

ある年の各月において、1月から当月までの累計金額をカウントする必要があります(
例:
2月→50、
3月→50+50=100、
2月→50+50+23=123、2月→50+50+23=123)。

アイデア: 直接グループ化した場合、並べ替えられた累計は、yyyy 年 MM 月形式や yyyy-MM 形式ではなく、yyyy 年 M 月形式の文字列であるため、計算できません。
ここに画像の説明を挿入します

最初に month フィールドをインターセプトして月を取得し、インターセプトした月を int 型に変更し、グループ化してソートを蓄積します。SQL コードは次のとおりです

ここに画像の説明を挿入します

ここに画像の説明を挿入します

または、日付を MM 形式で yyyy 年として追加できます

select d.month,d.output_amount,0+SUBSTRING_INDEX(d.month,'year',-1) project_output_plan_detail d から年を削除します d where d.main_id = '1659442677806051330' ORDER BY 年を削除します

ここに画像の説明を挿入します

mysql文字列フィールドのインターセプト

mysql の文字列インターセプト関数: left()、right()、substring()、substring_index()。Mid()、substr()もあります。このうち、mid() と substr() は substring() 関数に相当し、substring() の関数は非常に強力かつ柔軟です。

  1. 文字列インターセプト: left(str, length)
    ここに画像の説明を挿入します

  2. 文字列インターセプト: substring(str, length)
    2.1 substring(str, length) は、文字列の length 文字位置から始まり、最後までです。
    ここに画像の説明を挿入します

2.2 substring(str, pos, len) は、文字列の長さの文字位置から始まる len 文字を受け取ります。
ここに画像の説明を挿入します
2.3 substring(str, pos, len) pos は、文字列の 4 番目の文字位置 (逆数) から始まる負の数にすることができます。終わりまで。
ここに画像の説明を挿入します

  1. 文字列インターセプト: substring_index(str,delim,count) は、先頭から count 番目の区切り文字までインターセプトします。count が負の場合、逆数から count 番目の区切り文字までインターセプトします。
    ここに画像の説明を挿入します

参考:https://www.cnblogs.com/wjm956/p/7724244.html

ビルドコンバージョンタイプ

mysql は、CAST と CONVERT という 2 つの型変換関数を提供します。
ここに画像の説明を挿入します

例えば:
ここに画像の説明を挿入します

参考: https://blog.csdn.net/dataijidexiaozi/article/details/103340117

文字列長()関数

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/rainAndyou/article/details/131114357