0

MAC アドレス フィールドを介して結合したい 2 つのテーブルがありますが、各テーブルにはわずかに異なる MAC アドレスが格納されています。

Table 1 data: 0:1e:8:c5:9e:fe
Table 2 data: 00:1e:08:c5:9e:fe

最初のものは、コロンで区切られたフィールドの 6 つのグループのいずれかの開始 0 を削除します。

データを変更せずに SQL でこれらに参加できる方法はありますか?

両方の値を XX:XX:XX:XX:XX:XX に変換してから比較する必要があると思います...その方法がよくわかりません。

4

4 に答える 4

1

REPLACEおよびSTUFF関数を使用して先行ゼロを削除できます。

SELECT *
FROM Table1
INNER JOIN Table2
ON Table1.ShortMac = STUFF(REPLACE(':' + Table2.LongMac, ':0', ':'), 1, 1, '')
于 2013-08-09T19:22:37.827 に答える
0

値を変換する簡単な方法は、: で文字列を分割またはトークン化することです。次に、アイテムをループし、サイズが != 2 の場合は、先頭に 0 を追加し、それらを連結して戻します。ちょっと強引ですが、それは仕事をするでしょう.

于 2013-08-09T18:47:51.060 に答える
0

@plattitude が説明するようなブルー​​ト フォース アプローチに似ていますが、正規表現と各「:」文字が「:」または「:0」のいずれかと一致し、短い文字列または「0」+ 短い文字列が一致する REPLACE を使用すると、やや単純になります。より長いです。

式のビルドとテストにアクセスできないホテルの部屋で申し訳ありませんが、誰かがそれを回答に追加したいと思うかもしれません。

于 2013-08-09T20:39:08.057 に答える