2015-10-20 53 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