MYSQL - 如果列包含字符 THEN ... ELSE

标签 mysql

我有一列 product_id 可以包含下划线。如果是这样,我想捕获它左边的所有内容,如下所示:

 SELECT LEFT(product_id,LOCATE('_',product_id) - 1) As po, product_id FROM orders_item

这会产生以下内容:

po     product_id   
40     40_59
46     46_74
95     95_223
134    134_271
86     86_265
71
76
48     48_79
137    137_298
50     50_247
48     48_80
124    124_187

但是它会忽略所有没有下划线的记录。如何在 MySQL 中编写以下内容?

 If `<contains underscore>` THEN `<everything to the left of the underscore>` ELSE `<entire field>`

最佳答案

使用SUBSTRING_INDEX相反:

SELECT SUBSTRING_INDEX(product_id, '_', 1) AS po, product_id
FROM orders_item

关于MYSQL - 如果列包含字符 THEN ... ELSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36647786/

相关文章:

php - 如何在 Doctrine 查询构建器中进行多个 WHERE IN 列查询?

php - 使用 AJAX/PHP/MySQL 的地址簿 - 1 个文件中的完整项目 :)

mysql - 插入错误 :connect ECONNREFUSED

mysql - Codeigniter - 查看文件 - 从sql中批量获取数据

mysql - 表成表行

MySQL:有点不同的主细节sql查询

mysql - 查询数学运算与在 mysql 数据库中的固定列上使用更新触发器

mysql - 如何更改mysql用户权限?

Mysql:选择最近30天内具有起始日期值的所有行

php - 调用未定义的方法 Closure::query()