2015-10-16 70 views
0

我正在使用mysql。仍然在學習有關它的事情。使用mysql查找類似的數字模式

我有了一個名爲UPC列,它是字符表(13)

我發現有哪裏有喜歡的圖案記錄:

4009426030 
04009426030 

像上面指具有的UPC我有兩個相同的項目記錄。我需要找到所有相同的記錄,以便合併它們。所以,我想

SELECT * 
    FROM products p1 
WHERE prod_id in (
    SELECT prod_id 
     FROM products p2 
     WHERE lpad(p2.upc, 13, '0') = lpad(p1.upc, 13, '0') 
     AND p2.upc != p1.upc 
) 

我的想法是,我會找到這裏'4009426030' != '04009426030''0004009426030' == '0004009426030',所以我不會在相同的記錄,只有那些不同的匹配記錄。

但我沒有得到任何結果!有人可以看到我做錯了什麼嗎?

回答

1

試試這個:

SQL Fiddle

的MySQL 5.6架構設置

CREATE TABLE products 
    (`prod_id` int,`upc` varchar(25)) 
; 

INSERT INTO products 
    (`prod_id`, `upc`) 
VALUES 
    (1, '4009426030'), 
    (2, '04009426030') 
; 

查詢1

SELECT * 
FROM products p1 
inner join products p2 on lpad(p2.upc, 13, '0') = lpad(p1.upc, 13, '0') 
     AND p2.upc > p1.upc 

Results

| prod_id |   upc | prod_id |  upc | 
|---------|-------------|---------|------------| 
|  2 | 04009426030 |  1 | 4009426030 | 
+0

非常感謝。 – Bicycle