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 解析とエクスポートの詳細な説明

推薦する

Vue が 4 レベルのナビゲーションと検証コードを実装する方法の例

効果: まず5つのVueインターフェースを作成する1.home.vueページ <テンプレート&...

CSS 8 目を引く HOVER 効果のサンプル コード

1. エフェクトHTMLを送信する <div id="送信ボタン">...

HTML コードを書くための 30 のヒント

1. HTMLタグは常に閉じる前のページのソース コードでは、次のような記述がよく見られます。 &l...

mysql 結合クエリ (左結合、右結合、内部結合)

1. MySQLの一般的な接続INNER JOIN (内部結合、または等価結合): 2 つのテーブ...

Nginx メモリプールのソースコード分析

目次メモリプールの概要1. nginxデータ構造2. nginxはOSからスペースngx_creat...

JavaScript のガベージコレクションの仕組みの詳細な説明

目次ガベージコレクション (GC) はなぜ必要なのでしょうか?ガベージコレクションとは廃棄物の発生ガ...

binlog2sql と簡単なバックアップおよびリカバリを使用して mysql8.0.20 を構成するための詳細な手順

目次最初のステップのインストールステップ2: MySQLデータを準備する3 番目のステップは、bin...

高度な JavaScript フロントエンド開発でよく使用されるいくつかの API の例の詳細な説明

目次ミューテーションオブザーバーAPI特徴インターセクションオブザーバーAPI例えば画像の遅延読み込...

Docker での Redis のマスタースレーブ構成チュートリアルの詳細説明

1. Redisイメージを取得するdocker pull redis 2. それぞれポート6379、...

CentOS7 での PostgreSQL 11 の詳細なインストールと設定のチュートリアル

1. 公式ウェブサイトアドレス公式サイトではインストールの参考手順が紹介されています。公式サイトを見...

MySQL の lru リンク リストの簡単な分析

1. 従来のLRUリンクリストについて簡単に説明するLRU:最も最近使われなかったものLRU リンク...

nginxリバースプロキシのマルチポートマッピングの実装

コードの説明1.1 http:www.baidu.test.com のデフォルトは 80 で、リバー...

MySQLのタイムゾーンを表示および設定する方法

1. データベースのタイムゾーンを確認する '%time_zone' のような変数を...

IEではボタンが両側に伸びる

ボタン (input, button) を記述すると、IE では次のようになります。単語数が増えると...

MySQL 5.7 の一時テーブルスペースを使用して落とし穴を回避する方法

導入MySQL 5.7 は、SSL/TLS と全体的なセキュリティ開発におけるいくつかの重要な変更に...