2016-04-15 12 views
1

私はそれがないunderscore.Ifを含むことができ、列product_idを持って、私はそうのように、それの左側にすべてをつかむしたい:MYSQL - 列がTHEN文字が含まれている場合... ELSE

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で次のように記述しますか?あなたはそのためのCASEを使用することができます

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

答えて

2

使用SUBSTRING_INDEX:タイマーが許す時に完全に働いた

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

は、受け付けます!乾杯 – Lee

0

:代わりに

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 
関連する問題