【问题标题】:T-SQL: Validate nvarchar ASCII charactersT-SQL:验证 nvarchar ASCII 字符
【发布时间】:2013-08-21 15:48:57
【问题描述】:

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

【问题讨论】:

    标签: sql-server tsql ascii


    【解决方案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 的字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 2012-05-31
      • 2022-01-20
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多