LIKE 子句中的正则表达式仅接受字母数字和破折号

Alv*_*zon 3 sql t-sql sql-server sql-like

下面是我的 SQL 函数脚本,它将帮助识别字母数字值和破折号 ( -):

CREATE   FUNCTION [dbo].[FN_VALIDATE_ALPHANUMERIC_AND_DASHES](@TX_INPUT VARCHAR(1000))RETURNS BIT AS
BEGIN     
    DECLARE @bitInputVal AS BIT = 0
    DECLARE @InputText VARCHAR(1000)

    SET @InputText = LTRIM(RTRIM(ISNULL(@TX_INPUT,'')))
  
    IF @InputText <> ''
    BEGIN
        SET @bitInputVal = CASE
                                WHEN @InputText LIKE '%[A-Za-z0-9-]%' THEN 1
                                ELSE 0
                            END
    END
  RETURN @bitInputVal
END 
Run Code Online (Sandbox Code Playgroud)

我尝试此查询时遇到问题: SELECT dbo.FN_VALIDATE_CLAIMANT_REF_NO('AbcdefgH-1234*')它给出的结果是,1尽管该字符*未包含在正则表达式中,但应该返回0

我想要实现的是显式验证字符串是否仅包含字母数字 (字母和数字)破折号

请注意,字符长度没有限制,仅检查字符串是否由字母数字和破折号组成。

Pra*_*mar 5

您正在测试“字符串中是否存在任何字母、数字或破折号”

您应该测试是否存在除字母、数字或破折号之外的任何字符。

SET @bitInputVal = CASE WHEN @InputText LIKE '%[^A-Za-z0-9-]%' THEN 0 ELSE 1 END
Run Code Online (Sandbox Code Playgroud)