Использование CAST с WHERE

0

У меня есть эта таблица (студенты):

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 и т.д. Я не хочу их выбирать.

Теги:

3 ответа

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

https://www.db-fiddle.com/f/c6byWF6ahoBusWQqqNtsSf/0

  • 0
    @ Jasminder Pal Singh это работает?
  • 0
    Сработало отлично. Спасибо :)
Показать ещё 2 комментария
0

Я думаю, что вы хотите, like:

where address like '%451%'

Ты можешь использовать:

where address like 'test451.%'
  • 0
    Я не могу использовать как, потому что есть другие строки с адресом как test4451, test5451. Я должен использовать =.
  • 0
    Любой другой обходной путь?
Показать ещё 4 комментария
0
SELECT CAST(25.65 AS int);

Это то, что говорит W3schools. Это должно получить целое число из строки.

  • 0
    Это не работает при использовании с ГДЕ. Я пытался.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню