MySQL の連結で複数の一重引用符と三重引用符を使用する際の問題

MySQL の連結で複数の一重引用符と三重引用符を使用する際の問題

文字列を動的に連結する場合、文字連結を使用することが多いです。次のような連結の引用符の意味がわかりません。

1. '''+ id +''' に引用符が 3 つあるのはなぜですか? 左側にプラス記号があり、右側にもプラス記号があるのはなぜですか? (詳しく説明していただけますか?)

SQLコード

sum(case Leave when '''+ id +''' then DaysNo else 0 end) ['+ name +']'

通常の文:

SQLコード

SUM(CASE Leave WHEN '01' THEN DaysNo END) AS [CASE Leave],
SUM(CASE Leave WHEN '02' THEN DaysNo END) AS [病気休暇]

短い答え:

簡単に言うと、単一引用符はステートメントを連結するために使用され、3 つの引用符は文字列変数値を連結するために使用されます。

引用符には特別な意味があるため、エスケープするには引用符を 2 回記述する必要があります。

2. 文字列の単一引用符と二重引用符には違いがありますか?

簡単に言うと、通常使用する場合は、一重引用符を使用します。一重引用符で囲まれている場合は、一重引用符を使用する必要があります。次に、一重引用符 (エスケープ) を追加して、一重引用符を 3 つにする必要があります。

標準 SQL では、文字列リテラルは一重引用符で囲まれます。

文字列自体にも一重引用符が含まれている場合は、一重引用符を 2 つ使用します (二重引用符ではないことに注意してください。文字列内の二重引用符は個別にエスケープする必要はありません)。

MySQL の SQL 拡張機能では、一重引用符と二重引用符の両方を使用できます。

簡単な要約:

文字列を連結するときに、ステートメント内で一重引用符が必要な場合は、1 つの一重引用符ではなく 2 つの一重引用符を使用できます。

mysql> select concat('drop user ''''@', ''''、@@hostname、 '''');
+----------------------------------------------------+
| concat('drop user ''''@', ''''、@@hostname、 '''') |
+----------------------------------------------------+
| ユーザー ''@'bei-f0q5bc2.gemalto.com' を削除します |
+----------------------------------------------------+
セット内の 1 行 (0.00 秒)

補足拡張: MySQLは一重引用符と二重引用符で囲まれた文字列を挿入します

以下のように表示されます。

文字列 needInsertStr= 一重引用符と二重引用符で囲まれた文字列。

String finalStr = needInsertStr.replaceAll("'", "\\\\\'"); //効果は一重引用符の前にエスケープ記号を追加するのと同じです\
//他の特殊文字についても同様 long dateMillions = System.currentTimeMillis();

StringBuilder は、新しい StringBuilder() を作成します。
stringBuilder.append("" に挿入);
stringBuilder.append(テーブル名);
stringBuilder.append("(uuid、name、metric_id、service_id、script、deleted、created、updated) ");
stringBuilder.append("値(uuid(),'");
文字列ビルダー.append(名前);
文字列ビルダー.append("','");
文字列ビルダー.append(名前);
文字列ビルダー.append("','");
文字列ビルダー。サービス ID を追加します。
文字列ビルダー.append("','");
文字列ビルダー.append(finalStr);
文字列ビルダー.append("',0,");
文字列ビルダーを追加します。
文字列ビルダー.append(",");
文字列ビルダーを追加します。
文字列ビルダー.append(")");

stringBuilder.toString() を返します。

// スクリプトフィールドは一重引用符と二重引用符で囲まれた文字列です

テーブルに挿入(文字列) 値(' "これはテスト文です" + \'テストの一重引用符と二重引用符\' ')

MySQL の連結で複数の一重引用符と三重引用符を使用する方法に関する上記の記事は、編集者が皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL ステートメントに一重引用符またはバックスラッシュを含む値を挿入する方法
  • MySQL で二重引用符の位置が誤っていたために起きた殺人事件の詳細な分析
  • シングルクォートを使用したMySQLクエリとシングルクォートを使用した文字列の挿入について
  • 単一引用符によって引き起こされる MYSQL パフォーマンス問題の分析
  • MySQL における引用符とバックティックの違いと使い方の詳細な説明

<<:  DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

>>:  Vue ベースの Excel 解析とエクスポートの詳細な説明

推薦する

MySQL DDL による同期遅延を解決する方法

目次序文解決ツールの紹介仕組み使用制限使用上の注意使用例いくつかのパラメータの説明出力例Tencen...

Linuxネットワーク設定の基本操作コマンドを詳しく解説

目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...

NexusはHTTPSプロトコルをサポートするためにnginxプロキシを使用します

背景すべての会社の Web サイトは HTTPS プロトコルをサポートする必要があります。Aliba...

vue構成ファイルはルーティングとメニューインスタンスコードを自動的に生成します

目次前面に書かれたルータ.jsonルート生成メニュー生成効果要約する前面に書かれたルートを繰り返し記...

Vue3カプセル化メッセージメッセージプロンプトインスタンス関数の詳細な説明

目次Vue3 カプセル化メッセージプロンプトインスタンス関数スタイルレイアウトカプセル化メッセージ....

角度付き双方向バインディングの詳細な説明

目次双方向バインディングの原理ngモデルレンダリングカスタム双方向バインディングプロパティコンポーネ...

Reactでパスワード強度検出器を実装する方法

目次序文使用コンポーネントの記述データ構造分析プロセス分析基礎コードの分析他の要約する序文パスワード...

HTML メタの使用例

使用例コードをコピーコードは次のとおりです。 <!DOCTYPE html> <!...

MySQL 5.7 のユニオンオール使用法のブラックテクノロジーを 5 分で学ぶ

MySQL 5.6 での union all のパフォーマンスパート 1:MySQL 5.6.25 ...

初心者がHTMLタグを学ぶ(3)

HTML に触れる初心者は、いくつかの HTML タグを学びます。関連記事:初心者が学ぶ HTML...

SpringBoot プロジェクトの Docker クイック デプロイメントの紹介

1. Dockerをインストールするまず Linux 環境を開き、次のコマンドを入力してインストール...

MySQL 8.0 の新機能の分析 - トランザクション データ ディクショナリとアトミック DDL

序文トランザクション データ ディクショナリとアトミック DDL は、MySQL 8.0 で導入され...

MySQLにおけるrow_numberの実装プロセス

1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...

見栄えの良い CSS カスタム スタイル (タイトル h1 h2 h3)

レンダリングBlog Gardenでよく使われるスタイル /*タイトル h1 h2 h3 スタイル*...

Dockerに関するよくある質問

Docker はポートを IPv6 にのみマッピングし、IPv4 にはマッピングしません。 dock...