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 5.7.17 winx64 のインストールと設定方法のグラフィックチュートリアル

Windows インストール mysql-5.7.17-winx64.zip メソッド レコード &...

Vueは画像切り替え効果を実現

この記事の例では、画像切り替え効果を実現するためのVueの具体的なコードを参考までに共有しています。...

MySQLフィールドのデフォルト値を設定する方法

目次序文: 1. デフォルト値に関する操作2. 使用上の提案要約:序文: MySQL では、テーブル...

JavaScript で 9 グリッドのモバイル パズル ゲームを実装

この記事では、Jiugonggeモバイルパズルゲームを実装するためのJavaScriptの具体的なコ...

MySQL の自動インクリメント主キーが連続していないのはなぜですか?

目次1. はじめに2. 自己増分ストレージの説明3つの自己付加価値修正メカニズム4. 自己評価を修正...

aタグのhref属性とonclickイベントの比較

まず、href 属性と onclick イベントの実行順序について説明します。マウスが a タグをク...

Docker イメージのローカル Elasticsearch ポート操作へのアクセス

dockerスタックによってデプロイされたイメージサービスを使用すると、イメージを入力した後、理論的...

CSSテーマを簡単に切り替える方法の詳細な説明

最近、個人の Web サイトに非常にシンプルなカラー スキーム (テーマ) スイッチャーを追加しまし...

Webデザインの経験:ナビゲーションシステムをシンプルにする

<br />友人と話し合っていたとき、フレームワークのレイヤー設計の中で最も核となるのは...

Linux にソフトウェアをインストールするときにソフトウェア パッケージが存在しない問題を解決する方法

ソフトウェア パッケージが存在しない場合は、インストールされているソフトウェアのソフトウェア ソース...

Ajax の JavaScript ソリューションにおける parsererror エラー ケースの詳細な説明

ajax の parsererror エラー (バックグラウンドからフロントエンドに送信される js...

CentOS7 は Docker のバージョン 19 をデプロイします (簡単なので、従ってください)

1. 依存パッケージをインストールする [root@localhost ~]# yum insta...

CSS3のall属性の使い方を理解する

1. 互換性以下のように表示されます。 互換性は問題ありません。IE を除き、他のブラウザは基本的に...

Node.js の非同期イテレータの詳細な説明

目次序文非同期イテレータとは何ですか?非同期イテレータストリームとしてページング機能を備えたAPIの...

Tomcat のインストール後に起こりうる問題の紹介

1. Tomcatサービスが開いていませんブラウザのアドレスバーにlocalhost:8080と入力...