У меня есть эта таблица (студенты):
id | name | address
1 | hello | test451.1
2 | hello | test461.1
Я хочу выбрать строки, которые содержат 451
в поле адреса, точнее до десятичного и после строки алфавита. В принципе, я хочу отфильтровать 451
из значений адреса. Я использую следующий запрос, чтобы получить целое число из строки.
SELECT * FROM 'students' WHERE CAST('address' AS UNSIGNED) = '451'
Я до сих пор не знаю, как фильтровать для float.
Также попробовал это, но не работал:
SELECT * FROM 'students' WHERE CAST('address' AS DECIMAL(4,1)) = '451'
Я не могу использовать как% 451%, потому что есть другие строки с test4451.1, test 5441.1 и т.д. Я не хочу их выбирать.
используйте substring
и position
для определения 451
SELECT * FROM 'students' WHERE
substring(address,position('4' in address),4)= '451.'
вот ссылка, которую я пытаюсь использовать с вашими данными, и она возвращает
create table students (
id int,name varchar(50),address varchar(300)
);
insert into students values(1,'hello','test451.1'),(2,'hello','test461.1'),(3,'hell','test 5441.1');
id name address
1 hello test451.1
Я думаю, что вы хотите, like
:
where address like '%451%'
Ты можешь использовать:
where address like 'test451.%'
SELECT CAST(25.65 AS int);
Это то, что говорит W3schools. Это должно получить целое число из строки.