sql - 在 PostgreSQL 中查询时需要将空单元格替换为 "Blank"

标签 sql postgresql case coalesce

我正在尝试处理空单元格,并在 PostgreSQL 中查询时获取填充有“空白”字符串之类的空单元格的数据。我的查询如下所示:

SELECT t_id, a_date, c_date, o_s_date, o_e_date, 
   ttr_hr, ttn_min, d_sub_outage_impact,  
   tkt_source, d_vertical, d_grp, city, state
FROM r.all_t_event b

   Left Outer Join(
   select i_number,status,o_group
   From r.hpd_help_desk
   Group by i_number,status,o_group) a on a.i_number =b.t_id
Where close_date >= to_timestamp('10/05/2017','mm/dd/yyyy')
and t_condition = 'Outage'
and (a_grp like '%NOC%' or a.o_group like '%NOC%')
and t_id not in ('INC8788','INC26116')
and a.status = '5'

在 SELECT 语句中尝试了很多 CASE 语句,但当我尝试使用以下内容时,我总是收到类似“错误:在“WHEN”处或附近出现语法错误”的错误:

CASE 
WHEN d_outage_min = " " then "blank" else d_outage_min
WHEN v_outage_min = " " then "blank" else v_outage_min //Error occurred here
.....END

当我尝试时,出现了类似“错误:“CASE”处或附近的语法错误:

CASE 
WHEN d_outage_min = " " then "blank" else d_outage_min
END

CASE //Error occurred here

WHEN v_outage_min = " " then "blank" else v_outage_min
END
CASE...END

很高兴有一个出路/合并语句语法/任何可以帮助的东西。 再次感谢!

最佳答案

这是一个简单的语法错误。 需要单引号 (''),而不是双引号 (""),双引号表示 标识符。这有效:

CASE WHEN d_outage_min = ' ' THEN '"blank"' ELSE d_outage_min END

假设“空”表示一个空白。对于空字符串使用 '',对于 NULL 使用 COALESCE() .

Read the manual here.

关于sql - 在 PostgreSQL 中查询时需要将空单元格替换为 "Blank",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47878003/

相关文章:

sql - 更改SQL Server 2012系统排序规则

postgresql - 使用 postgres test-app 从 Grails 2.1.0 升级到 2.3.7 正在中断

json - postgresql 10 中 Json 值的最大长度

php - 在 PDO 中使用 case 更新多行时参数编号无效

sql - SQLite:“准备语句”不起作用

php - 上传多张图片

php - MySQL:将分钟转换为小时和分钟

postgresql加载sql脚本

mysql - 如何在MySQL中的case语句中使用比较运算符?

改变 C 中字母的大小写?