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

Regex in LIKE Clause that accepts only Alphanumeric and dashes

下面是我的 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 

我在尝试这个查询时遇到了问题: SELECT dbo.FN_VALIDATE_CLAIMANT_REF_NO('AbcdefgH-1234*') 它给了我 1 结果,尽管字符 * 不包含在正则表达式中,应该 return 0 代替。

我想要实现的是显式验证字符串是否由 alphanumeric (alphabets and numbers) and 破折号

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

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

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

SET @bitInputVal = CASE WHEN @InputText LIKE '%[^A-Za-z0-9-]%' THEN 0 ELSE 1 END