如何在Mysql中检查列值是NULL还是具有DEFAULT值

时间:2017-05-30 07:43:06

标签: mysql sql

我想获取列值不等于null且列值不等于默认值的记录。 我知道我们可以使用

SELECT * FROM table WHERE column_name is NOT NULL AND column_name != 'some_default_value';

但如果将来有人改变表中的some_default_value会怎样? 有灵活的解决方案吗?

4 个答案:

答案 0 :(得分:2)

您可以使用DEFAULT功能:

SELECT * 
FROM table 
WHERE IFNULL(column_name, DEFAULT(column_name)) <> DEFAULT(column_name);

答案 1 :(得分:0)

尝试使用rows.count,它可以帮助您了解表是否为null或因此包含相同的值。

答案 2 :(得分:0)

您可以使用MySQL中的DEFAULT function

SELECT * FROM grouptable WHERE column_name is NOT NULL and column_name <> DEFAULT( column_name )

答案 3 :(得分:0)

您可以使用 information_schema.COLUMNS 表来查找默认值,包括表格的所有定义。

样本表

/// <reference path="./node_modules/@types/lodash/index.d.ts" />

console.log(_);

表的原始数据

CREATE TABLE `Matches` (
  `FootballerName` varchar(100) DEFAULT NULL,
  `Goal` int(11) DEFAULT '5',
  `Tournament` varchar(100) DEFAULT NULL
) ;

要求达到所需的查询。

insert into Matches(FootballerName,Goal,Tournament)
select 'Messi ', 3 ,'La liga' union
select 'Ronaldo ', 5 ,'UEFA' union
select 'Surez ', 2 ,'La liga';

您可以详细了解“information_schema.COLUMNS” here