私は現在、の主キーフィールドを持っていnvarchar(50)
ます。空白を受け入れないようにすることができれば、タイプを変更したいと思います。とにかくこれを行うことはありますか?
次のことを許可する必要があります。
------
AAAA
BBBB
CCCC
次のことを許可しないでください。
------
AA AAA
BBBB B
C CCCC
私は現在、の主キーフィールドを持っていnvarchar(50)
ます。空白を受け入れないようにすることができれば、タイプを変更したいと思います。とにかくこれを行うことはありますか?
次のことを許可する必要があります。
------
AAAA
BBBB
CCCC
次のことを許可しないでください。
------
AA AAA
BBBB B
C CCCC
次のチェック制約を追加できます。
CHECK LEN(col) = LEN(REPLACE(col, ' ', ''));
...また...
CHECK (col NOT LIKE '% %');
...また...
CHECK (CHARINDEX(' ', col) = 0)
例:
USE tempdb;
GO
CREATE TABLE dbo.bar(foo NVARCHAR(50) PRIMARY KEY);
ALTER TABLE dbo.bar ADD CONSTRAINT chkNoSpaces
CHECK (foo NOT LIKE '% %');
成功:
INSERT dbo.bar(foo) SELECT 'AAAA';
GO
失敗:
INSERT dbo.bar(foo) SELECT 'AA AA';
GO
結果:
メッセージ547、レベル16、状態0、1行
目INSERTステートメントがCHECK制約「chkNoSpaces」と競合していました。データベース「tempdb」、テーブル「dbo.bar」、列「foo」で競合が発生しました。
ステートメントは終了されました。
掃除:
DROP TABLE dbo.bar;
編集
何らかの理由でUIを介してこれを行う必要がある場合(ここでも、アトミック、繰り返し可能、ファイルへの保存、ソース管理への保存などを行うことができるスクリプトを使用してこれを行うことをお勧めします):
column_name NOT LIKE '% %'
]ボックスに入力します(ではなく、実際の列名を使用しますcolumn_name
)UIが実際に句の構成を変更することに注意してください。(NOT col_name LIKE '% %')