MySQL では lastIndexOf に似た関数を使用する必要がある場合もありますが、すぐに使用できる既製の関数は用意されていないため、自分で見つけ出す必要があります。 まず、MySQL は次の 3 つの機能を提供します。instr(str:varchar, substr:varchar): str# 内の subsrtr の最初の出現を返します。例: 文字列 ab/cd/abc.html 内の b の最初の出現を検索します。select instr('ab/cd/abc.html', 'b'); # プログラマーが考えているのとは異なり、上記の結果は 2 です (添え字は 1 から始まりますので注意してください) 逆(str:varchar): 文字列を先頭から末尾まで反転し、abcを入力してcbaを出力します。 length(str:varcha): 文字列の長さを返します 上記の情報を知った後、ほとんどの人は lastInfdexOf 関数の実装方法を知っていると思います。 直接与える:select length('入力文字列') - instr(reverse('入力文字列'), '検索する文字列'); # 例: 文字列 'ab/cd/abc.html' 内の '/' の最後の位置を検索します。結果は次のとおりです: 5 length('ab/cd/abc.html') - instr(reverse('ab/cd/abc.html'), '/') を選択します。 最後に、最近私が遭遇した小さな要件を以下に示します。 データベース フィールドの値 (値は ab/cd/abc.html などのファイルのパス名) を取得し、ファイル名 (abc.html) を解析する SQL スクリプトを記述します。 右から選択(CONTENT_NAME, instr(reverse(CONTENT_NAME), '/') - 1) FILE_NAME config_template_contentから where lower(CONTENT_NAME) like '%/%.html'; # データに / が含まれている場合はこれで十分です。フィールド値が abcde.html の場合は判断が必要です〜 上記は正しい機能の使い方です。その有用性はご自身で探して(体験して)みてください。 補足: mysql の SELECT LAST_INSERT_ID() ステートメントの使用時に発生する問題 序文:主キーが自動増分であるデータベース テーブル (ユーザー テーブルなど) にレコードを挿入する場合、書き込まれたばかりのレコードの ID を取得することが期待されます (シナリオによっては、他の操作を実行するためにこの ID を取得する必要があるため)。この時点で、SELECT LAST_INSERT_ID() ステートメントを使用して、レコードが挿入された後に返される自動増分 ID の値を取得する必要があります。 例: /** * 苦情情報を挿入 * @param complaintInfoModel * @戻る */ @InsertProvider(タイプ = ComplaintInfoDao.ComplaintProviderSql.class、メソッド = "insertComplaintInfo") @SelectKey(ステートメント="SELECT LAST_INSERT_ID()", keyProperty="id", before=false, resultType=Integer.class) Integer insertComplaintInfo(ComplaintInfoModel complaintInfoModel); // データを挿入し、変更されたデータベースエントリの数を返します Mybatis の SelectKey は、データ挿入時に主キーが自動的に生成されない問題を解決するためのものです。主キーの生成方法を任意に設定できます。しかし、SelectKey がどれだけ優れていても、このような状況に遭遇しないようにしてください。結局のところ、非常に面倒です。 selectKey 属性
----1. SelectKeyは順序属性に注意する必要があります。 MySQL などの自動拡張をサポートするデータベースでは、正しい値を取得するために order を after に設定する必要があります。 Oracle のようなシーケンスを取得する場合は、before に設定する必要があります。そうしないと、エラーが報告されます。 -----2. さらに、Springを使用してトランザクションを管理する場合、 SelectKey と insert は同じトランザクション内にあるため、この場合、データがデータベースに挿入されないため、Mysql は自動的に増加されたキーを取得できません。 トランザクション管理をキャンセルすれば問題は発生しません。 以下は XML と注釈の例です。SelectKey は非常に単純なので、次の 2 つの例で十分です。 <挿入id="挿入" パラメータタイプ="マップ"> テーブル1 (名前) の値 (#{名前}) に挿入します <selectKey 結果タイプ="java.lang.Integer" キープロパティ="id"> コールID() </selectKey> </挿入> 上記の xml の入力パラメータは map であり、selectKey は結果を入力パラメータ map に格納します。 POJO でも状況は同じですが、注意すべき点が 1 つあります。keyProperty に対応するフィールドには、POJO 内に対応する setter メソッドが必要であり、setter のパラメーター型が一貫している必要があります。そうでない場合は、エラーが報告されます。 @Insert("table2 (name) の値(#{name}) に挿入") @SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class) int insertTable2(名前 name); 上記は注釈の形式です。 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: ウェブページ作成時のHTMLタグの使用に注意してください
>>: Dockerネットワーク作成に--subnetを追加した後の問題を解決する
目次1. 監視プロパティを監視する1. ショッピングカート2. すべて選択し、すべて選択解除する2....
<iframe src=”test.jsp” width=”100″ height=”50″ ...
チェックボックスは Web ページで非常によく使用されます。e コマースの Web サイトでもプラッ...
この記事の例では、3階層メニューを再帰的に実装するVueの具体的なコードを参考までに共有しています。...
最新バージョンのMySQL 8.0.11をインストールした後、ユーザーを作成して認証します。認証され...
1. 色合わせの問題<br />Web ページには 3 色以上使用しないでください。そう...
目次1. 内閣府1. コンセプト2. MHAの構成3. MHAの特徴2. MySQL+MHAをビルド...
1いくつかの一般的な文字セットMySQL で最も一般的な文字セットには、ASCII 文字セット、ラテ...
インターネットにはすでにこの種の記事が溢れていますが、私がこれをまだ書いている理由は単純です。それは...
目次1. Javascript とは何ですか? 2. DOMとは何か3. JSコードの実行方法4. ...
質問会社がサーバーを移行した後、デフォルトで作成された docker0 ブリッジが会社の外部ネットワ...
まずは効果の写真をお見せしましょう。 個人的には効果は問題ないと思います。アプリが写真を学習する時間...
最近、外国人が CSS3 を使用してアコーディオン効果を実現しているビデオを見たので、自分で学習した...
目次序文やることリストやるだけ地図を準備するインスタンスをバックアップ用に保存するタイマーカルーセル...
Tomcatはプロジェクトにアクセスします。通常はIP + ポート + プロジェクト名です。 Ngi...