2015-10-20 44 views
1

我的表中有一列名爲UPC的列。該列允許最多13位數字。例如列值應該是這樣的。如何根據mysql中字符串的長度修整前導零位

0892902000161 
0097512135764 
4046228003979 

現在我只需要一個零修剪,如果是有領先的兩個零像這樣0097512135764.我現在用下面的查詢來修剪所有前導零。

SELECT TRIM(LEADING '0' FROM `UPC`) upc FROM `mytable`. 

但現在我只需要一個零修剪,如果它是一種有兩個主要zeros.Some一個可以指導me.Any幫助將不勝感激。

SELECT 
    CASE WHEN UPC LIKE '00%' THEN RIGHT(UPC, LENGTH(UPC) -1) 
    ELSE UPC 
    END AS UPC 
FROM `mytable` 

in the same query how can we check the count of upc number? I mean if length of upc is 13 
digits and first one is zero then need to remove first zero. Then upc length should be 12. 
If upc length is 13 and first two are zeros then need to remove single zero. 
Then also upc length should be 12 digits.How can we acheive this? 

回答

1

CASE應該足夠。對於UPC,以00...開頭,得到UPC,沒有第一個字符。

SELECT 
    CASE WHEN UPC LIKE '00%' THEN RIGHT(UPC, LENGTH(UPC) -1) 
    ELSE UPC 
    END AS UPC 
FROM `mytable` 

LiveDemo

編輯:

如果UPC長度是13和前兩個是零則需要刪除 單個零。

如果upc的長度是13位數,並且第一個是零,那麼需要 刪除第一個零。

SELECT 
    CASE 
    WHEN UPC LIKE '00%' AND LENGTH(UPC) = 13 THEN RIGHT(UPC, LENGTH(UPC) -1) 
    WHEN UPC LIKE '0%' AND LENGTH(UPC) = 13 THEN RIGHT(UPC, LENGTH(UPC) -1) 
    ELSE UPC 
    END AS UPC 
FROM `mytable` 

LiveDemo

+1

HI小夥子,謝謝你,我的作品完美。 – user3408779

+0

@ user3408779不客氣 – lad2025

+0

@Lod,在同一個查詢中我們如何檢查upc數的計數?我的意思是,如果upc的長度是13位,第一個是零,那麼需要刪除第一個零。那麼upc長度應該是12.如果upc長度是13並且前兩個是零,那麼需要去除單個零。那麼upc長度應該是12位數。我們該如何實現這個目標? – user3408779

相關問題