我的表中有一个名为UPC的列。该列最多允许13位数字。例如,列值应如下所示。

0892902000161
0097512135764
4046228003979

现在我只需要修剪一个零,如果它有像这样的前导两个零0097512135764。现在我使用下面的查询来修剪所有前导零。
SELECT TRIM(LEADING '0' FROM `UPC`) upc FROM `mytable`.

但是现在如果有两个前导零,我只需要修剪一个零。有人可以指导我。任何帮助都将非常感谢。
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?

最佳答案

CASE应该足够了。对于以UPC开头的00...不带第一个字符的getUPC

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

关于mysql - 我如何基于mysql中字符串的长度修剪前导零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33237681/

10-13 07:28