简体   繁体   English

T-SQL:验证nvarchar ASCII字符

[英]T-SQL: Validate nvarchar ASCII characters

有没有办法知道nvarchar列的内容是否仅包含一些ASCII字符(精确地为33到127)?

You can create a validation function 您可以创建验证功能

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

And then add a check constraint to the table, for example: 然后将检查约束添加到表中,例如:

ALTER TABLE
    [dbo].[TableToControl]
ADD CONSTRAINT
    [CK_NVarChar_Validate]
CHECK (
    [dbo].[NVarChar_Validate]([FieldToControl], 33, 127) = 1
)

As a result all fields will be guaranteed to have chars from 33 to 127 only. 结果,将确保所有字段的字符数只能为33至127。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM