sql - 尝试在 SQL 中将空白值转换为 null
问题描述
我正在尝试在进行简单选择时处理空白或 '' 值以更改为 NULL,但它不起作用。
select distinct case when [Manager]='' then null else [Manager] end as Mgr from Table
where [Manager] in ('Abc', 'bas', 'xyz', 'pqr', '')
还有其他方法吗?
解决方案
老实说,有一百万种方法可以做到这一点,有人确实正确地指出 where 子句中的函数消除了索引的使用。
但是在我的查询中发生的是我正在删除字段周围的任何空格(两个修剪),然后 isnull 说,如果你找到一个空值,那么将它设置为''。我这样做是为了只有一个语句,或者您可以摆脱 isnull 并说“或 [manager] 为空”。选择是说修剪管理器,如果它是空白的(nullif),请将其设置为 null 如果我理解正确,这是预期的结果。
SELECT
DISTINCT NULLIF(LTRIM(RTRIM([manager])),'') AS Mgr
FROM
Table
WHERE
ISNULL(LTRIM(RTRIM([manager])),'') IN ('Abc','bas','xyz','pqr','')
推荐阅读
- c++ - 在 GCC-7 中使用功能测试宏
- javascript - React:渲染大图像和放大
- javascript - Java Script Function 对于特定的正则表达式运行良好,但在另一个正则表达式中无法正常运行
- c# - 使用查找集合的 IValueConverter
- c# - Azure 函数 httpclient ObjectDisposedException 无法访问已处置的对象 SslStream
- excel - 无法工作簿。打开 XLS 文件类型?
- google-sheets - 如何创建一个公式来对一列中的值求和,但将这些值乘以另一列?
- c# - 如何将此解密合并到我的代码中,将散列密码转换回原始密码
- swift - 界面生成器中具有动态类型的自定义字体
- excel - for循环中的条件语句