首页 > 解决方案 > 如何确定mysql中字符串列中的NULL和实际字符串“NULL”之间的差异

问题描述

我正在尝试从 mysql 数据库中读取 mysql 中的值以供下游使用(最终由 Ruby 程序将存储的结果解析为类型化值)。当我遇到一个 varchar 列时,我有时会看到 value NULL。但我实际上无法区分 dbNULL和实际字符串 value之间的区别"NULL"。虽然我不希望有大量带有 value 的字符串,但"NULL"我不想假设并认为必须有一种方法来确定我实际上要返回的字符串。

我正在使用 执行此操作mysql -e $CMD,但还添加了-B-r标志,它们没有任何区别,可以让我区分这两个可能的返回值:

attribute1  attribute2
NULL    NULL

attribute2 的值是字符串"NULL"

我怎样才能区分这些?

标签: mysql

解决方案


如果您无法使用任何 DBMS,则只能使用 mysql CMD 我看到带有条件表示列的解决方案。

SELECT IFNULL(NULL, '<<NULL>>'), IFNULL('NULL', "<<NULL>>"); --output <<NULL>> for NULL values

或者

SELECT COALESCE(NULL, '<<NULL>>'), COALESCE('NULL', "<<NULL>>"); --output <<NULL>> for NULL values

或者

SELECT IF(attribute1 = "NULL","\"NULL\"", attribute1); --output "NULL" for 'NULL' strings.

当然,您需要调整对列的查询。

SELECT COALESCE(attribute1, '<<NULL>>'), COALESCE(attribute2, "<<NULL>>") FROM ....;

另一种方法是在 SELECT 查询之前清除所有"NULL"字符串。

UPDATE table SET attribute2=NULL WHERE attribute2="NULL";

推荐阅读