-1

私はしばらく SQL Server から離れることを決めたので、NPOCO + PostgreSQL Space にはまったく慣れていません。

私の問題は、通常、NPOCOでこのようなクエリを書くことです

   database.Execute("select userId from Users");

そして、SQL Server の世界ではすべてが正常に機能します。PostGreSQL の世界に来て、このように少し奇妙に見えるクエリに遭遇しました

  SELECT "UserId", from dbo."Users"

今、列とテーブル名を引用符で囲む必要があることを確認して、NPOCO で PostgreSQL クエリを使用する方法を知りたいと思っています。

前もって感謝します

4

1 に答える 1

0

postgres の列名とテーブル名は、大文字または特殊文字が含まれている場合にのみ引用符で囲む必要があります。つまり、デフォルトでは、postgres SQL パーサーは引用符で囲まれていないすべての名前に小文字を強制します。これにより、インタラクティブな使用が少し便利になりますが、大文字、スペース、または絵文字を使用してテーブルと列の名前を自動生成するソフトウェアがある場合は、はるかに便利ではありません。

つまり、テーブル名がusersで、列名がuseridの場合、クエリselect userid from usersは正常に機能します。Users引用を開始する必要があるのは、テーブル名が の場合のみです。

私が気付いた他のSQLの違いは、dboスキーマの指定です。Postgres はスキーマ (「名前空間」とも呼ばれます) をサポートし、それらに使用できる検索パスを備えています。また、デフォルトの「パブリック」スキーマもあります。デフォルトsearch_pathは次のとおりです。

"$user", public

これは、あなたselect * from fooが usernameの場合bob、postgres がチェックしてbob.foopublic.foo最初に見つかったものを として使用することを意味しますfoo。必要に応じて変更できsearch_pathます。

SET search_path to dbo,public;

dbo.これにより、クエリの " " 部分をスキップできます。

于 2016-06-29T17:42:21.220 に答える