我正在尝试使用WHERE BETWEEN语句在特定范围之间过滤数据。我的数据包含字母和数字(即abcd123456
),并且我使用字符通配符仅选择数字(即%____123456%
)。
当我尝试运行以下代码时,即使在该范围内捕获了许多行数据,也不会显示任何结果。
SELECT Column1, Column2
FROM Table1
WHERE Column1 BETWEEN '%____182001%' AND '%____193010%'
答案 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