MYSQL-如果列包含字符,则。。。其他的

MYSQL-如果列包含字符,则。。。其他的,mysql,Mysql,我有一个可以包含下划线的列product\u 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

我有一个可以包含下划线的列
product\u 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
但是它会忽略任何没有下划线的记录

 If `<contains underscore>` THEN `<everything to the left of the underscore>` ELSE `<entire field>`
如果``那么``其他``

您可以使用
案例
进行以下操作:

SELECT
    CASE
        WHEN LOCATE('_', product_id) > 0 THEN LEFT(product_id, LOCATE('_', product_id) - 1)
        ELSE product_id
    END AS po,
    product_id
FROM
    orders_item
改用:


工作完美,将接受时,计时器允许!干杯
SELECT SUBSTRING_INDEX(product_id, '_', 1) AS po, product_id
FROM orders_item