3

テーブルを作成するときにデータ型を使用する必要がありますが、SQLServerSETにデータ型がないようSETです。私はマイクロソフトのウェブサイトを見ていました、そしてそれらはそれがサポートするデータ型です:http: //msdn.microsoft.com/en-us/library/ms187752.aspx

どちらを使用して交換する必要がありSETますか?

私はSET次のようにMySQLデータベースで使用しました:

CREATE TABLE IF NOT EXISTS `configurations` (
`index` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`configDuration` int(5) NOT NULL,
`configDurationPerspective` set('list_this_day','list_remaining') NOT NULL,
PRIMARY KEY (`index`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

そして、テーブルにデータを挿入すると、次のようになります。

INSERT INTO 'configurations' (index, user_id, configDuration, configDurationPerspective) VALUES (1, 1, 2, 'list_this_day');

引用符は気にしないでください。コードの貼り付け中に何かが台無しになりました。

今、私は同じことをしたいのですが、SQLServerで。

4

2 に答える 2

2

個別のビットフィールド(値ごとにビットデータ型を持つ1つの列)を使用するか、整数データ型を持つ列に値をパックする必要があります。整数を使用する場合は、t-sqlビット単位演算子を使用して値の読み取りと書き込みを行う必要があります。

ビット演算子を使用すると、1つの列しか取得できません。createtableステートメントは次のようになります。

CREATE TABLE configurations(
[index] int NOT NULL IDENTITY (1,1) PRIMARY KEY,
user_id int NOT NULL,
configDuration int  NOT NULL,
configDurationPerspective int NOT NULL,
)

次に、1,2,4,8,16,32のようなビットマスクが可能な値をconfigDurationPerspectiveに挿入する必要があります。

INSERT INTO 'configurations' (index, user_id, configDuration, configDurationPerspective) VALUES (1, 1, 2, 'list_this_day');

に翻訳されます

INSERT INTO 'configurations' (index, user_id, configDuration, configDurationPerspective) VALUES (1, 1, 2, 1);

INSERT INTO 'configurations' (index, user_id, configDuration, configDurationPerspective) VALUES (1, 1, 2, 'list_remaining');

に翻訳されます

INSERT INTO 'configurations' (index, user_id, configDuration, configDurationPerspective) VALUES (1, 1, 2, 2);

選択は次のようになります。

select  [index], configDuration,
case when configDurationPerspective & 1 > 0 then 'list_this_day' else '' end
 + case when configDurationPerspective & 2 > 0 then 'list_remaining' else '' end as configDurationPerspective
 from configurations
于 2012-11-05T12:31:24.107 に答える
2

MSSQLServerの基本タイプのリストは同じものをサポートしていません。しかし、私たちが持っているのは制約とユーザータイプです。この質問では、MySQL列挙型がどのように解決されるかを確認できます

MySQL列挙型データ型と同等のSQLServer?

また、ユーザータイプを観察することもできます(同様の目的で使用されていることを確認しました)

http://msdn.microsoft.com/en-us/library/ms175007.aspx

しかし、この問題の最も一般的な解決策として、(プロジェクトでは)「CodeList / StaticList」テーブルを使用し、主キー(int、shortint、tinyint)で参照していました。

于 2012-11-05T13:15:37.383 に答える