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

例如,我试图查询一个数据库,该数据库以两种格式中的任何一种在一列中存储数据(这很糟糕,会伤到我的头,但我无法更改数据,所以它就是这样).因此,有时列numbers会有类似于"6901xxxxxxxx"的数据,有时它会有类似于"91XXXXXXXXXX"的数据.

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

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

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

推荐答案

使用第二种形式的CASE应该有效:

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

此外,在SELECT的末尾还有一个逗号.

Mysql相关问答推荐

MySQL查询基于上次访问时间戳更新用户的问题

SQL-从一个字段中 Select 值,但另一个字段中不包含零值

奇怪的MySQL SELECT循环;但不是\G

MySQL Group by或Distinct in Window函数

"Shelf服务器容器访问MySQL Docker容器时出现SocketException异常"

如何计算具有权重属性的记录数

为什么 `count` 函数有效但 `sum` 无效?

如何在 MySQL 中查找重复值和更新值

Mysql JSON_REMOVE 数组键和值 (MariaDB)

MySql部分匹配基于部分查询代码

如何获取从开始时间到结束时间的所有正在运行的作业(job)的总和?

mySQL 中的主数据库和 IF 错误?

Mysql 相等性反对 false 或 true

如何查看 rdsadmin 在 mysql 实例上的权限?

DECIMAL(m, n) 在 64 位系统中如何表示?

mysql从另一个表中 Select 不相等的值

MySQL:如何多次加入同一张表?

在mysql中将纪元数转换为人类可读的日期

MySQL嵌套 Select 查询?

我在哪里可以下载 mysql jdbc jar?