0

結合に使用する2つの列(各テーブルに1つの列)の値が完全に同じではない2つのテーブルを結合しようとしています。

左結合テーブルの正規表現は:^d_0*\d+(eg d_00233)であり、右結合テーブルの値は\d+(eg 233)です。

SQLでそれを行うことは可能ですか?(私はMicrosoft SQL Server 2008を使用しています)

4

3 に答える 3

2

このようにしてみてください:

Select * from TableA a
Inner join TableB    b
On Right(a.Column1,3)= b.Column1

また、CTEを使用して、長さが3になる右結合テーブルデータ(たとえば233)の長さを取得し、この長さを使用したRIGHT関数パラメーターで再利用できます3

編集:

CTEがなければ、これはうまくいくはずだと思います。

Select * from TableA a
Inner join TableB    b
On Right(a.Column1,LEN(b.Column1))= b.Column1
于 2012-12-04T06:22:35.017 に答える
1

クエリはどうですか?

SELECT * FROM Table1 a INNER JOIN Table2 b 
ON CONVERT(INT, STUFF(a.ColumnName, 1, PATINDEX('%[0-9]%', a.ColumnName + '1')-1, ''))=b.ColumnName
于 2012-12-04T05:28:31.100 に答える
0

実際、正規表現ではなく、次のSQLを使用することにしました。

SELECT * FROM din2class RIGHT OUTER JOIN features_top20 ON din2class.din = CAST(SUBSTRING(dbo.features_top20.feature, 3,LEN(dbo.features_top20.feature)) AS INT)

したがって、正規表現を使用する代わりに、単純な部分文字列とキャスト(開始0を削除するため)を使用しましたが、正規表現よりも使いやすいようです。

于 2012-12-04T05:54:49.010 に答える