postgres 判断jsonb是否为空
时间: 2023-07-18 18:47:52 浏览: 156
你可以使用`jsonb`类型的`IS NULL`和`IS NOT NULL`操作符来判断`jsonb`是否为空。
例如,假设有一个名为`mytable`的表,其中有一个`jsonb`类型的列`mycolumn`,你可以使用以下查询来判断该列是否为空:
```
SELECT * FROM mytable WHERE mycolumn IS NULL;
```
或者,你可以使用以下查询来查找非空的`mycolumn`值:
```
SELECT * FROM mytable WHERE mycolumn IS NOT NULL;
```
如果你想进一步判断`jsonb`对象是否为空,你可以使用`jsonb_object_keys()`函数来获取对象中的键列表,然后使用`array_length()`函数来计算键的数量。例如:
```
SELECT * FROM mytable WHERE array_length(jsonb_object_keys(mycolumn), 1) = 0;
```
这将返回所有`mycolumn`值为空的行。
相关问题
postgres 判断表有没有主键
可以使用以下 SQL 语句来判断表是否有主键:
```
SELECT conname FROM pg_constraint WHERE conrelid = 'your_table_name'::regclass AND contype = 'p';
```
如果返回结果中有一条记录,说明该表有主键;如果没有记录,则该表没有主键。请将 `your_table_name` 替换为你要查询的表名。
postgres 根据身份证号判断男女
您可以使用 PostgreSQL 的内置函数 `substring` 和 `length` 来根据身份证号判断性别。具体实现如下:
```sql
SELECT CASE WHEN substring('身份证号', 17, 1)::integer % 2 = 1 THEN '男' ELSE '女' END AS 性别
```
其中,`substring` 函数可以截取身份证号中的某一段字符串,第一个参数为要截取的字符串,第二个参数为开始位置,第三个参数为截取的长度。`length` 函数返回字符串的长度。
身份证号中的第 17 位为性别标识位,奇数代表男性,偶数代表女性。因此,我们可以将第 17 位截取出来并转换为整数,再用模运算判断奇偶性,最终返回男或女。