带有LIKE运算符的Select语句中的MySQL Case

Hur*_*ile 42 mysql case

是否可以在MySQL 语句中组合CASE语句和LIKE运算符SELECT

例如,我试图查询一个数据库,该数据库以两种格式之一存储单个列中的数据(这很糟糕并且伤害了我的头脑,但我无法更改数据,所以它就是它.).所以有时列numbers会有像"6901xxxxxxxx"这样的数据,有时会有像"91xxxxxxxxxxx"这样的数据.

我想做的是像这样查询数据 -

SELECT
    CASE digits
      WHEN LIKE "6901%" THEN substr(digits,4)
      WHEN LIKE "91%" THEN substr(digits,2)
    END as "digits",
FROM raw
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,但我希望它可能.

Dan*_*uis 78

使用第二种形式CASE应该工作:

SELECT
  CASE
    WHEN digits LIKE '6901%' THEN substr(digits,4)
    WHEN digits LIKE '91%' THEN substr(digits,2)
  END as digits
FROM raw
Run Code Online (Sandbox Code Playgroud)

此外,你的结尾有一个流浪逗号SELECT.

  • +1:`CASE column WHEN...` 格式仅适用于精确匹配;必须使用这种格式进行部分匹配。 (2认同)
  • 丁丁丁,形式错案.非常感谢大家,我的桌子/额头很感激. (2认同)

Tim*_*Tim 6

尝试

SELECT
    CASE true
      WHEN digits LIKE "6901%" THEN substr(digits,4)
      WHEN digits LIKE "91%" THEN substr(digits,2)
    END as "digits",
FROM raw
Run Code Online (Sandbox Code Playgroud)