mysql - 如何确定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"
。
我怎样才能区分这些?
解决方案
如果您无法使用任何 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";
推荐阅读
- reactjs - 从 api 获得响应后如何测试 setState
- sql - Oracle SQL where 子句在某些日期不起作用
- postgresql - 如何在表中未定义约束的情况下修复“没有与 ON CONFLICT 规范匹配的唯一或排除约束”
- jquery - Ember UI 未加载
- amazon-web-services - 如何在新的 Cloudformation 模板中引用 Cloudformation 资源?
- python - 找到这些图片的中心,OpenCV-Python
- sql-server - SQL Server 访问已备份且在当前版本中不可用的旧数据
- html - 我怎样才能只闪烁背景而不是文本
- python - Python os.system 连接到池
- python - 无法将消息发布到云 pub sub