用于postgres / npgsql中参数赋值的符号(@)与冒号(:)之间的区别

时间:2018-03-28 19:40:41

标签: postgresql npgsql

我试图搜索这个,但是使用符号几乎不可能获得结果。这两者之间是否存在差异,例如:被放入C#中的查询字符串:

string strCmd = "SELECT * FROM MyFunction(@user_id, @action_date)"

VS

string strCmd = "SELECT * FROM MyFunction(:user_id, :action_date)"

我总是使用冒号,但我偶尔会看到它以另一种方式完成。我想知道它们是否可以互换,或者是否可以选择其中一种。

1 个答案:

答案 0 :(得分:2)

两个字符之间没有任何区别:两者都是参数占位符。请注意,这些实际上并没有发送到PostgreSQL; Npgsql重写SQL查询,用PostgreSQL的位置参数占位符($ 1,$ 2)替换客户端。