0

私は Projectnumber に対して 2 つのテーブルを比較する必要がある状況にあります。両方のテーブルにフィールド ProjectNumber がありますが、1 つのデータ型は INT で、もう 1 つのテーブルは VARCHAR(45) です。したがって、次のクエリを実行しようとすると、一致しないレコードもいくつか発生します

 Select prj.Projectnumber,ps.ProjectNumber as 'ProjectNumber2'
 from projectlistsearch ps 
 inner join project prj on ps.ProjectNumber= prj.ProjectNumber

これにより、いくつかの正しいレコードが得られますが、このように悪い結果にもなります

ProjectNumber     ProjectNumber2
8                 08-809076
11                11-437881
11                11-505934
2007              2007-45750
2011              2011-0A76

タイプキャストも試しましたが、うまくいきませんでした。

この状況を克服して、完全に一致したレコードのみを取得するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

キャスト関数を確認してください: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast

例えば:

... WHERE CAST(prnumVarchar AS UNSIGNED INTEGER) = prnumInt;
于 2012-10-24T11:15:07.647 に答える
0

たとえば、テキストが 10 進数で始まる場合に aを変換すると、解析可能なプレフィックス部分のみが int に変換されるため、 を に変換INTしてVARCHARこれら 2 つを比較することをお勧めします。VARCHARINT

入力:

'08-809076'

解析可能なプレフィックス:

08

に変換INT

8

逆に、VARCHAR値は一致'8'しないものと比較されます。'08-809076'

于 2012-10-24T11:28:24.367 に答える