sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLの関数名は大文字と小文字を区別しませんか?

    関数名は識別子です (テーブル名、フィールド名など)、同じルール ケースセンシティビティについてはすべてに適用されます。

    つまり、識別子は、引用符で囲まれていない限り、大文字と小文字は区別されません

    より正確には、引用符で囲まれていない識別子は内部で小文字に変換されます 次に、ケースセンシティブマッチが試行されます。これにより、通常、テーブルまたは関数を定義するときに引用符で囲まれた識別子を使用した場合、人生が悲惨になる可能性があります(つまり、隠れたバグ、時間の浪費)。

    そのため、常に独自の命名規則を定義し、それに固執する必要があります。

    一般的なアドバイス:識別子には常に小文字を使用し、満足してください。

    db=# select now();
                  now
    -------------------------------
     2011-06-10 16:33:06.588401-03
    (1 row)
    
    db=# select Now();
                  now
    -------------------------------
     2011-06-10 16:33:08.066818-03
    (1 row)
    
    db=# select "now"();
                  now
    -------------------------------
     2011-06-10 16:33:14.543381-03
    (1 row)
    
    db=# select "Now"();
    ERROR:  function Now() does not exist
    LINE 1: select "Now"();
                   ^
    HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
    


    1. SQLServerの文字列へのvarbinary

    2. PL/SQLストアドプロシージャでコンマ区切りの文字列を分割する

    3. SQLite JSON_EXTRACT()

    4. あるSQLServerから別のSQLServerにテーブルデータをエクスポートする