首页 > 解决方案 > 正则表达式数字和破折号

问题描述

我很想在我的LIKE条款上有一个正则表达式,并给出以下标准:

例子:

目前有这个功能:

CREATE FUNCTION [dbo].[FN_VALIDATE_ID](@TX_INPUT VARCHAR(50))RETURNS BIT AS
BEGIN     
    DECLARE @bitInputVal AS BIT = 1
    DECLARE @InputText VARCHAR(50)

    SET @InputText = LTRIM(RTRIM(ISNULL(@TX_INPUT,'')))
  
    IF @InputText <> '' AND LEN(@InputText) = 13
    BEGIN
        SET @bitInputVal = CASE
                                WHEN @InputText LIKE '%^[0-9]%'  THEN 1
                            ELSE 0 
                            END
    END
  RETURN @bitInputVal
END 

标签: sqlsql-serverregextsql

解决方案


您甚至不需要 UDF,因为 SQL Server 的增强型LIKE运算符可以处理此要求:

SELECT *
FROM yourTable
WHERE col LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]';
--                  \          8 digits              /  -  \   4 digits  /

推荐阅读