5

このようなクエリをどのように処理するのか疑問に思っています。スプレッドシートのセル A2 に次のテキストが含まれているとします。

Case Bakers' Flats 12" White Flour Tortillas 10/12ct

次の式を B2 に入れる必要がありました。

=QUERY(importrange("KEY", "DATA!A1:Z1000"), "select Col24 where (Col1 = '"&A2&"')")

エラーが発生します。

私の質問は次のとおりです。使用している文字列に引用符とアポストロフィの組み合わせが含まれている場合に、クエリのつまずきを回避する方法はありますか?

4

2 に答える 2

9

簡潔な答え

  • 一重引用符/アポストロフィをエスケープするには、二重引用符 ( ") の間にアポストロフィを含む文字列を含めます。
  • 二重引用符をエスケープするには、二重置換を適用して、最初に二重引用符を削除してから、再度追加します。

説明

Google スプレッドシートの QUERY 組み込み関数\は、一重引用符の前に内部的に追加することで一部の文字を自動的にエスケープしますが、条件のソースとして使用されるセル値に二重引用符が含まれている場合は機能しません。回避策として、二重置換の使用が提案されています。

一重引用符/アポストロフィの例

以下の表は、含まれるスプレッドシートの範囲を表します

  • 列 A: データ ソース
  • セル B1: 条件式で使用されるデータ値
  • セル C1: 次の数式=QUERY(A:A,"SELECT * WHERE A = """&B1&""" ")
+---+---------+-----+-----+
| | | | あ | ビ | シー |
+---+---------+-----+-----+
| | 1 | 私は | 私は | 私は |
| | 2 | あなたは | | | | |
| | 3 | それは | | | | |
| | 4 | 私は | | | | |
| | 5 | あなたは | | | | |
| | 6 | それは | | | | |
+---+---------+-----+-----+

一重引用符/アポストロフィおよび二重引用符の例

=置換(
   クエリ(
     SUBSTITUTE(A:A,"""","''"),
     "SELECT * WHERE Col1 = """&SUBSTITUTE(B1,"""","''")&""""
    )、
    """、""""
 )

データ ソース列の識別子として文字 A を使用する代わりに、Col1 を使用していることに注意してください。

参照

https://developers.google.com/chart/interactive/docs/querylanguage

于 2016-03-12T15:59:18.150 に答える
-1
=query('Book list'!A:F,"select B,C,D,E where F=""free"" and D="""&E1&"""") - because:

リテラルの各タイプの形式は次のとおりです。

文字列リテラルは、一重引用符または二重引用符で囲む必要があります。例: "fourteen"'hello world'"It's raining"

上の参考書にある通り。

于 2020-09-29T21:37:35.153 に答える