0

以下にリストされているような2つのテーブルがあります。

+----+----------------+-----------+-----+
| id | Catalog Number | Pack Size | Qty |
+----+----------------+-----------+-----+
|  1 | K353-J353-5    | 5 kg      |   3 |
|  2 | V3532-3        | 3 kg      |   2 |
|  3 | S32-366-10     | 10 kg     |   1 |
+----+----------------+-----------+-----+

+----+----------------+--------------+
| id | Catalog Number | Product Name |
+----+----------------+--------------+
|  1 | V353-J353      | a            |
|  2 | V3532          | b            |
+----+----------------+--------------+

これら 2 つのテーブルを結合したいのですが、カタログ番号の形式が異なるために問題が発生しています。カタログ番号は常に「-」文字で分割されますが、「-」が 0 または 1 の場合があります。

私が管理した唯一の方法は、Excel のテキストから列への関数を使用することですが、SQL に同等の方法はありますか?

前もって感謝します、マイク

4

2 に答える 2

0

試す:

SELECT *
FROM Table1
JOIN Table2 ON Table2.`Catalog Number` LIKE CONCAT(Table1.Catalog Number, '%')
于 2013-08-27T23:07:29.313 に答える
0

JOINテーブルを作成する場合、ON句で MySQL 関数を使用することは有効です。

SELECT * FROM
Table1
JOIN Table2
ON REPLACE(Table1.catalog_number, "-", "") = REPLACE(Table2.catalog_number, "-", "")

これにより、V35323 と V3532-3 のカタログ番号で列が結合されますが、V3532 と V3532-3 のカタログ番号では結合されません。質問自体によると、これで問題は解決するはずです。しかし、データを見ると、私はよくわかりません。

編集

あなたの質問には具体的には記載されていませんが、最初のテーブルの最後の数字グループを無視して、2 番目のテーブルの変更されていないカタログ番号と一致させようとしていると思います。それが本当なら、これはうまくいきます:

SELECT * FROM
Table1
JOIN Table2
ON
REPLACE( SUBSTR(Table1.catalog_number, 1, LENGTH(Table1.catalog_number) - LENGTH(SUBSTRING_INDEX(Table1.catalog_number, "-", -1)) - 1), "-", "")
=
Table2.catalog_number;

それは非常に複雑ですが、それはトリックを行います:

mysql>     SELECT * FROM
    ->     Table1
    ->     JOIN Table2
    ->     ON
    ->     REPLACE( SUBSTR(Table1.catalog_number, 1, LENGTH(Table1.catalog_number) - LENGTH(SUBSTRING_INDEX(Table1.catalog_number, "-", -1)) - 1), "-", "")
    ->     =
    ->     Table2.catalog_number;
+----+----------------+-----------+------+----+----------------+--------------+
| id | catalog_number | pack_size | qty  | id | catalog_number | product_name |
+----+----------------+-----------+------+----+----------------+--------------+
|  2 | V3532-3        | 3 kg      |    2 |  2 | V3532          | b            |
+----+----------------+-----------+------+----+----------------+--------------+
1 row in set (0.02 sec)
于 2013-08-27T22:59:18.547 に答える