4

質問を検索しましたが、答えが見つかりませんでした。Table 1 と Table 2 で内部結合を行いたいのですが、一方のフィールドは INT で、もう一方のフィールドは VARCHAR (構造 "A-INT") です。何かのようなもの:

    Table1                    Table2

    ID NAME   WHATEVER        ID USER
    1  A-001  ---             1  001 
    2  A-002  ---             2  002
    3  A-003  ---             3  003
    3  A-004  ---             4  004  
    ...

クエリを作成するにはどうすればよいですか? 何かのようなもの:

... Table1 INNER JOIN Table2 ON Table1.NAME = Table2.[A-USER] ...
4

3 に答える 3

9

int値を に変換してvarcharと連結するか、値'A-'の数値部分を取得して に変換する必要があります。varcharint

これは、使用しているデータベースによって少し異なります。SQL Server の場合は次のようになります。

select t1.ID, t1.WHATEVER, t2.USER
from Table1 t1
inner join Table2 t2 on t2.ID = cast(substring(t1.NAME, 3, 3) as int)
于 2012-10-09T07:25:45.877 に答える
0

連結してみると、

SELECT *
FROM Table1 a, Table2 b
WHERE a.Name = 'A-' + b.User

ただし、これによりパフォーマンスが低下することに注意してください。

于 2012-10-09T07:23:15.987 に答える
-3

Table1.NAME = Table2.[A-USER] で内部結合を行いたいとします。

Table1.NAME、Table2.[A-USER]列のデータ型が異なる場合、内部結合を使用することはできません。

于 2012-10-09T07:26:06.390 に答える