mysql - 进行选择限制字符长度不会返回空值
问题描述
我有一个充满地址记录的表,我正在尝试CHAR_LENGTH
对每一列使用限制器进行选择,但是每当我在列中有一个空值时,它都会返回 0 个结果。这是我的例子:
SELECT *
FROM SubjectDetailsView
WHERE ShipInFlag IS NULL
AND ZipCode IS NOT NULL
AND CHAR_LENGTH(ZipCode) < 11
AND CHAR_LENGTH(State) = 2
AND Address1 IS NOT NULL
AND CHAR_LENGTH(Address1) < 36
AND CHAR_LENGTH(Address2) < 36;
我的主要问题是地址2。Zipcode、State 和 Address1 总是有一个值,所以这从来不是问题,但 Address2 通常有一个空值。当我在 Address2 字段中有数据时,我得到一个结果,但如果它为空,我得到 0 个结果。
那么CHAR_LENGTH
只是寻找一个字符串(在我的情况下为 1-35),而忽略空值?如果是这样,我如何让我的查询返回结果,如果 Address2 可以有空值而不是空值,同时仍然少于 36 个字符?
解决方案
您可以使用 IFNULL 函数使字符串具有如下长度empty
:
SELECT * FROM SubjectDetailsView
WHERE ShipInFlag IS NULL
AND CHAR_LENGTH(IFNULL(ZipCode, 'empty')) < 11
AND CHAR_LENGTH(State) = 2
AND CHAR_LENGTH(IFNULL(Address1, 'empty')) < 36
AND CHAR_LENGTH(IFNULL(Address2, 'empty')) < 36;
推荐阅读
- r - 如何获得在 R 中绘制的图形的全尺寸图片
- java - 将数据存储在数组中好吗?
- html - 建表作业html5
- android - 如何响应地使用gridView?
- sql - Firebird 将常量添加到查询中的返回列
- amazon-web-services - 如何将不安全的 Docker 注册表证书添加到 kubeadm 配置
- parameters - TestNG @Parameters 在 java 上失败,但在 xml 文件上传递!我该如何解决这个问题?
- r - 大型 JSON 列表到整洁的表格
- axapta - 阻止 FormRun 任务在 DetailsTransaction 模式中执行
- google-apps-script - 从 Google Apps 脚本执行 SSH 命令