代码之家  ›  专栏  ›  技术社区  ›  Jasminder Pal Singh

在何处使用Cast

  •  0
  • Jasminder Pal Singh  · 技术社区  · 7 年前

    我有这张桌子(学生):

    id | name  | address
    1  | hello | test451.1
    2  | hello | test461.1
    

    我要选择包含 451 在地址字段中,精确到小数点前和字母字符串后。基本上我想过滤 四百五十一 从地址值。我正在使用以下查询从字符串中获取整数。

    SELECT * FROM `students` WHERE CAST(`address` AS UNSIGNED) = '451'
    

    我仍然不知道如何过滤浮筒。

    也试过但没用:

    SELECT * FROM `students` WHERE CAST(`address` AS DECIMAL(4,1)) = '451'
    

    我不能像%451%那样使用,因为还有其他行具有test4451.1、test 5441.1等,我不想选择它们。

    3 回复  |  直到 7 年前
        1
  •  1
  •   Zaynul Abadin Tuhin    7 年前

    使用 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

        2
  •  0
  •   Micha Wiedenmann Lieven Keersmaekers    7 年前
    SELECT CAST(25.65 AS int);
    

    那是什么 W3schools 说。这样就可以把整数从字符串中去掉。

        3
  •  0
  •   Gordon Linoff    7 年前

    我想你想要 like :

    where address like '%451%'
    

    你可以使用:

    where address like 'test451.%'