LIKE子句中只接受字母数字和短划线的Regex



下面是我的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的结果,尽管正则表达式中不包括字符*,应该返回0

我想要实现的是明确验证字符串是否仅由字母数字(字母和数字(短划线组成。

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

您正在测试"字符串"中是否存在任何字母、数字或短划线;

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

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

最新更新