您可以在WHERE BETWEEN语句中使用单字符通配符吗?

时间:2019-05-15 21:52:11

标签: mysql

我正在尝试使用WHERE BETWEEN语句在特定范围之间过滤数据。我的数据包含字母和数字(即abcd123456),并且我使用字符通配符仅选择数字(即%____123456%)。

当我尝试运行以下代码时,即使在该范围内捕获了许多行数据,也不会显示任何结果。

SELECT Column1, Column2
FROM Table1
WHERE Column1 BETWEEN '%____182001%' AND '%____193010%'

1 个答案:

答案 0 :(得分:0)

如果您的Column1包含Char,则可以使用此函数提取数字然后进行比较

DELIMITER $$ 

DROP FUNCTION IF EXISTS `uExtractNumberFromString`$$
CREATE FUNCTION `uExtractNumberFromString`(in_string varchar(50)) 
RETURNS INT
NO SQL

BEGIN

    DECLARE ctrNumber varchar(50);
    DECLARE finNumber varchar(50) default ' ';
    DECLARE sChar varchar(2);
    DECLARE inti INTEGER default 1;

    IF length(in_string) > 0 THEN

        WHILE(inti <= length(in_string)) DO
            SET sChar= SUBSTRING(in_string,inti,1);
            SET ctrNumber= FIND_IN_SET(sChar,'0,1,2,3,4,5,6,7,8,9');

            IF ctrNumber > 0 THEN
               SET finNumber=CONCAT(finNumber,sChar);
            ELSE
               SET finNumber=CONCAT(finNumber,'');
            END IF;
            SET inti=inti+1;
        END WHILE;
        RETURN CAST(finNumber AS SIGNED INTEGER) ;
    ELSE
        RETURN 0;
    END IF;

END$$

DELIMITER ;



SELECT Column1, Column2
FROM Table1
WHERE uExtractNumberFromString(Column1) BETWEEN 182001 AND 193010

参考:Removing numbers from string in mysql