有没有办法知道 nvarchar 列的内容是否只包含一些 ASCII 字符(精确到 33 到 127)?
问问题
646 次
1 回答
1
您可以创建一个验证功能
CREATE FUNCTION [dbo].[NVarChar_Validate] (
@@Value [nvarchar](max),
@@Min [int],
@@Max [int]
)
RETURNS [bit]
AS
BEGIN
DECLARE @Index [int] SET @Index = 1
WHILE @Index <= LEN(@@Value) AND UNICODE(SUBSTRING(@@Value, @Index, 1)) BETWEEN @@Min AND @@Max
SET @Index = @Index + 1
RETURN CASE WHEN @Index > LEN(@@Value) THEN 1 ELSE 0 END
END
GO
然后在表中添加一个检查约束,例如:
ALTER TABLE
[dbo].[TableToControl]
ADD CONSTRAINT
[CK_NVarChar_Validate]
CHECK (
[dbo].[NVarChar_Validate]([FieldToControl], 33, 127) = 1
)
因此,所有字段都将保证只有 33 到 127 个字符。
于 2013-08-21T18:55:40.057 回答