1

C# と Java でクエリ ビルダー モジュールを作成しています。ユーザーは指定された結合式に基づいてテーブルを結合できます[Table1].[ID] = [Table2].[ID]

Table1ユーザーは結合式を変更でき、 の任意のフィールドを の任意のフィールドと同等にすることを選択できますTable2

列のデータ型と長さが同じかどうかを確認することを考えましたが、たとえばvarchar(10)、列は列と結合できます。nchar(10)長さが同じであれば、これらの異なるデータ型を選択できます。

では、ユーザーが選択した結合式が有効であることを確認するには、チェックでどのような条件を指定すればよいでしょうか? PK/FK 制約だけに頼ることはできません。

基準は C# または Java に適用できます。問題ではありません。一般的な回答が得られたら、ソリューションを両方に適合するように変換できます。

4

2 に答える 2

2

オンライン ブックでは、暗黙的に変換できるデータ型、明示的に変換する必要があるデータ型、および変換できないデータ型が提供されます。CAST および CONVERT (Transact-SQL) を検索し、下にスクロールします。

ルールがわかったので、ある種のルール エンジンを構築できるはずです。

于 2013-03-11T18:13:52.447 に答える
1

最善の策は、単純にハードコーディングされたセットを用意し、両方のフィールドが同じセットにあるかどうかを確認してから、長さ比較することだと思います。

var TypeSets = new Dictionary<string, List<string>> {
                   { "string", new[] { "varchar", "nchar", "text" } },
                   { "integer", new[] { "int", "smallint" } },
               };

それで:

if (TypeSets.Any(x => x.Value.Contains(fieldType1) && x.Value.Contains(fieldType2)))
{
   // Check length of each field
}
else 
{
    return false;
}
于 2013-03-11T17:53:47.753 に答える