在Oracle中我们有
select dbms_assert.simple_sql_name(TEST) from dual
postgresql中的等价物是什么?我似乎找不到任何答案。
如果Oracle中的列错误,我们得到:
ORA-44003: invalid SQL name ORA-06512: at "SYS.DBMS_ASSERT", line 160
44003. 0000 - "invalid SQL name"
*Document: Yes
*Cause: The input parameter string was not a valid simple SQL name.
*Action: Check with the DBMS_ASSERT spec to verify that the parameter
string is a valid simple SQL name.
答案 0 :(得分:2)
不完全相同的事情,但是"非法"必须在Postgres(和SQL)中引用标识符。函数format()
有一个特殊的标识符占位符,如果有任何非标准的内容,它将返回一个带引号的标识符:
因此select format('%I', 'foo')
会返回foo
。
但select format('%I', 'foo bar')
会返回"foo bar"
因此,如果您检查引用了返回值(以"
开头),那么它不是有效的标识符。
这也会检查保留的关键字,因此select format('%I', 'order')
会返回"order"