0

以下の表を検討してください。

従業員:

------------------------------------
empid ename  dept
------------------------------------
10    vivek  CSE
-------------------------------------

給料:

----------------------------------------
empid     sal    city
------------------------------------
ten      30,400  hyderabad
---------------------------------------------

employee.empid(数値型) とsalary.empid(文字型)を使用して、これら 2 つのテーブルを結合したいと考えています。

これをどのように達成できるかについて誰かが提案できますか?

4

3 に答える 3

0

うーん。データベースで int の代わりに英語の単語を使用することはお勧めしません。

しかし、もしそうしなければならないなら、しなければなりません。いくつかのオプション:

  1. IDをintとして保持する別の列を給与テーブルに追加することに傾倒します。Java などの別の言語を使用して、列にデータを入力できます。http://www.dzone.com/snippets/convert-integer-english-0 . これと同じロジックを SQL に直接実装するのは面倒です。

  2. 私が本当にお勧めしないもう 1 つのオプションは、ルックアップ テーブルを使用することです。最終的に、これは悪い設計を回避するためだけに非常に大きなテーブルになってしまいます。テーブルは int_english と呼ばれ、フィールドは次のようになります

    id, english
    1 , "one"
    2 , "two"

于 2013-11-11T10:01:18.293 に答える
0

解決策は、テーブルのサイズと、別の言語または T-SQL だけでコーディングできるかどうかによって異なります。

しかし、英語の数字を整数に変換する標準関数がないため、辞書を作成したり、テーブルの 1 つを変換したりするという面倒な作業を行う必要があります。

ここでは、T-SQL で簡単な辞書を作成しました。 http://sqlfiddle.com/#!6/6e318/2/0

パフォーマンスが問題になる場合は、データを使用する前に別のテーブルに永続化するか、元のテーブルのインデックスを最適化することを検討する必要があります。どちらもトピックです。

これが 1 回限りの解決策であれば、問題ありません。長期的な場合は、Salary テーブルのデザインを変更して、char の代わりに整数を使用することを検討してください。

ハッピーコーディング。

于 2013-11-11T10:18:39.797 に答える