0

I'm trying to filter my data between a specific range using the WHERE BETWEEN statement. My data contains letters and numbers (i.e. abcd123456), and I'm using character wildcards to only select the numbers (i.e. %____123456%).

When I try and run the below code, no results are shown even though many rows of data are captured within the range.

SELECT Column1, Column2
FROM Table1
WHERE Column1 BETWEEN '%____182001%' AND '%____193010%'
gen_Eric
  • 223,194
  • 41
  • 299
  • 337
Austin
  • 1

1 Answers1

0

if your Column1 contains Char then you can use this function to extract numners then compare it

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

Reference : Removing numbers from string in mysql

asmgx
  • 7,328
  • 15
  • 82
  • 143