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