在SQL字符串中具有特定位置的CASE语句?

时间:2019-01-16 19:34:02

标签: sql

我正在测试数据库中错误格式化为具有0值的月份或年份的日期。例如,20190001将是与2019年1月相对应的日期,该日的值为0。 20191500将是月份类别中值为0的日期。我试图通过选择子字符串的值并在CASE语句中使用它们来查询数据库,以查看有多少格式错误的值。您能帮我找到一种更好的方法吗?这是我的代码:

SELECT  'date' as test,
        (CASE WHEN 
            (substring(cy.date,7, 2) OR substring(cy.date, 5, 2))
                IS NULL
                THEN 1 ELSE 0 END)
            AS incorrect_format

        (CASE WHEN
            (substring(cy.date,7, 2) OR substring(cy.date, 5, 2))   
                IS NOT NULL
                THEN 1 ELSE 0 END)
            AS correct_format

FROM data.cy_dates cy

1 个答案:

答案 0 :(得分:0)

对于这些特定示例,请使用like

(case when cy.date like '____00__' then 0
      when cy.date like '______00' then 0
      else 1
 end)

当然,日期可能还会有其他问题。