0

次のように、postgresql バージョン 9.1 に 2 つのアポストロフィを含む行セル値があります。

col1  col2
''    1
''    2
aa    3
aa    4

今、私は col1 から '' でそれらの行を選択したい

私は試した:

select * from table1 where col1 like '''''%'

しかし、何も返しません。

select * from table1 where col1 = ''''''

しかし、何も返しません。

select * from table1 where col1 = $$''''$$

何も返しません。

select * from table1 where col1 like $$''%$$

何も返しません。

誰でも助けることができますか?どうも

4

1 に答える 1

3

正しい 2 回目の試行がうまくいかなかった理由を説明していません。

完全を期すために、あなたが書いた問題を解決する正しい方法を以下に示します。これは、実際に発生した問題とは異なる可能性があると思われます。

  • オンの場合standard_conforming_strings(新しい PostgreSQL バージョン):

    SELECT * FROM table1 WHERE col1 = '''''';
    

    そこには6つの単一引用符があります。2 つは文字列リテラルの通常の引用符です。他の 4 つは、二重引用符のペアです。これは、2 つの単一引用符である文字列を検索する必要があり、二重引用符を二重にすることで引用符をエスケープするためです。

  • 漠然と最新の PostgreSQL のすべてのバージョンと設定の場合、ただし標準ではありません。

    SELECT * FROM table1 WHERE col1 = E'\'\''
    

    これは、C スタイルの文字列に慣れている人にとってははるかに読みやすいエスケープ文字列構文を使用します。

  • PostgreSQL 固有のドル表記:

    SELECT * FROM table1 WHERE col1 = $$''$$;
    

    これ$$は、PostgreSQL 拡張機能である引用スタイルを使用します。$$引用する'と、もはや特別なことではないので、普通の 2 文字を書くだけです''。もちろん、問題を に移動しただけなので、次の$$ように記述できます。

    SELECT * FROM table1 WHERE col1 = $uniquedelimiter$''$uniquedelimiter$;
    

    uniquedelimiter有効な識別子文字列を指定できます。

于 2013-06-16T23:37:19.117 に答える