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。
我想要实现的是显式验证字符串是否仅包含字母数字 (字母和数字)和破折号。
请注意,字符长度没有限制,仅检查字符串是否由字母数字和破折号组成。
您正在测试“字符串中是否存在任何字母、数字或破折号”
您应该测试是否存在除字母、数字或破折号之外的任何字符。
SET @bitInputVal = CASE WHEN @InputText LIKE '%[^A-Za-z0-9-]%' THEN 0 ELSE 1 END
Run Code Online (Sandbox Code Playgroud)