如果我在 PostgreSql 中声明一列serial,它将按顺序自动递增。由于回滚等原因,最终结果可能不连续,但或多或少是有序的。
我有一个用户表,其中用户 ID 设置为serial,因此从 1 开始递增...但我宁愿它们不是,因为这似乎要求某种序列号攻击。
是否有一种相对简单、相对高效的方法可以在 PostgreSQL 中创建自动人工 ID,使 ID 随机间隔开,并且您不应该期望 ID 987654321 位于 ID 987654320 后面?
PostgreSQL 有一个类型char,它被存储为一个有符号的 1 字节 int
类型
"char"(注意引号)的不同之处char(1)在于它只使用一个字节的存储空间。它在系统目录中作为一种简单的枚举类型在内部使用。
我们可以创建复合类型有"char"?我可以用它创建一个表...
CREATE TABLE pixel ( r "char", g "char", b "char" );
Run Code Online (Sandbox Code Playgroud)
在内部创建一个我可以在其他地方使用的类型,
CREATE TABLE f ( mypixel pixel );
Run Code Online (Sandbox Code Playgroud)
但是,我可以从中创建一个简单的TYPE(无表)吗?
CREATE TYPE pixel ( r "char", g "char", b "char" );
ERROR: syntax error at or near ""char""
LINE 1: CREATE TYPE pixel ( r "char", g "char", b "char" );
Run Code Online (Sandbox Code Playgroud) SQL 2011 规范支持CORRESPONDING子句,
功能 F301,“
CORRESPONDING在查询表达式中”:
这是什么功能?它是如何使用的?并且,它是否得到任何行业 RDBM 的支持?
这是我正在尝试做的一个例子,
SELECT *
FROM ( VALUES ('{"a":1}'::json) )
AS t(data)
WHERE data = '{"a":1}'::json;
Run Code Online (Sandbox Code Playgroud)
但它给了我这个错误,
ERROR: operator does not exist: json = json
LINE 4: WHERE data = '{"a":1}'::json;
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud) 我正在使用 PostgreSQL 9.5 处理地址数据库,并尝试创建一个选择语句,其中只返回街道名称而不返回类型。因此,如果我有一个记录显示:“Golf Course Rd”,我只想返回:“Golf Course”,或者如果记录是“Bentwood Rd”,我只想返回“Bentwood”。
关于如何解决这个问题的任何建议?
如何使用非锚定搜索模式索引以下语句
SELECT somefield
FROM sometable
WHERE lower(somefield2) like '%foo%';
Run Code Online (Sandbox Code Playgroud)
有些行有超过 2k 字节。
这是在PostgreSQL中创建新表的方法,
CREATE TABLE foo (
foo_id int PRIMARY KEY,
bar text,
);
Run Code Online (Sandbox Code Playgroud)
如果需要检查该表是否已存在并CREATE仅在未找到时继续处理,我该如何执行此操作?
SQL Server 中有一个非常令人讨厌的功能QUOTED_IDENTIFIERS,我想了解更多。简而言之,将选项设置为ON,这不是 Linux 客户端的默认设置,一切正常。没有它,有些事情会神奇地失败。Microsoft 声称该选项是DEFAULT,然后他们在自己的默认客户端中默认更改它。随着SET QUOTED_IDENTIFIERS OFF;,这有效,
CREATE TABLE f (
a int,
b int,
g AS (CASE WHEN a>b THEN a ELSE b END),
l AS (CASE WHEN a>b THEN b ELSE a END),
UNIQUE(a,b)
);
Run Code Online (Sandbox Code Playgroud)
有了SET QUOTED_IDENTIFIERS OFF;,这并不能正常工作,
CREATE TABLE f (
a int,
b int,
g AS (CASE WHEN a>b THEN a ELSE b END),
l AS (CASE WHEN a>b THEN b ELSE a …Run Code Online (Sandbox Code Playgroud) postgresql ×6
sql-standard ×2
datatypes ×1
exception ×1
index ×1
json ×1
linux ×1
operator ×1
primary-key ×1
select ×1
sql-server ×1
table ×1
union ×1