如何在PostgreSQL中判断行是否包含默认值
如何在SELECT语句中筛选值为字段默认值的记录?
你提到在UPDATE语句里可以用SET some_column = DEFAULT来把字段设为默认值,但直接在SELECT的WHERE子句里写some_column = DEFAULT确实会报错:默认值不允许在此上下文中使用。
要实现筛选值等于字段默认值的记录,有两种常用方法:
使用
DEFAULT()函数(主流数据库如MySQL、PostgreSQL都支持)
直接通过函数引用对应字段的默认值进行比较,语法如下:SELECT id FROM my_table WHERE some_column = DEFAULT(some_column);查询系统表获取默认值后手动比较
如果你的数据库不支持DEFAULT()函数,可以先查询系统表拿到字段的默认值,再代入查询语句:
以MySQL为例,先查默认值:SELECT column_default FROM information_schema.columns WHERE table_schema = '你的数据库名' AND table_name = 'my_table' AND column_name = 'some_column';得到默认值后,再写筛选语句:
SELECT id FROM my_table WHERE some_column = '查询到的默认值';注意如果默认值是数值类型,不需要加单引号。
内容的提问来源于stack exchange,提问作者Bbrk24
相关产品推荐
相关产品推荐

