如何使用mysql将字符串转换为整数并比较指定数字?

如何使用mysql将字符串转换为整数并比较指定数字?,mysql,sql,Mysql,Sql,我使用sql获取text值,并将text字符串转换为整数以比较相同的数字。 请原谅我的英语不好。 步骤1,我使用这个SQLGETtextvalue(结果类似于“8000mAh”,“2000mAh”) 第2步,我使用sql converttextstring to integer来比较相同的指定数字:(我删除最后三个str'mAh') 选择“产品id”, 案例 当cast(REVERSE(SUBSTRING(REVERSE(text),4))为UNSIGNED int)时您可以执行以下操作,因为c

我使用sql获取
text
值,并将
text
字符串转换为整数以比较相同的数字。 请原谅我的英语不好。 步骤1,我使用这个SQLGET
text
value(结果类似于“8000mAh”,“2000mAh”)

第2步,我使用sql convert
text
string to integer来比较相同的指定数字:(我删除最后三个str'mAh')

选择“产品id”,
案例

当cast(REVERSE(SUBSTRING(REVERSE(text),4))为UNSIGNED int)时您可以执行以下操作,因为
case
语句将匹配第一个可能的筛选器,所以您需要做的就是基于
进行匹配,我只需将
text
直接转换为一个数字;事实上,在数字上下文中使用它可以隐式地做到这一点。因此,人们可以采取如下行动:

选择产品标识,文本DIV 1000+1作为过滤器标识
来自jfw_产品_属性
其中属性_id=3
但是,请注意,这不会产生与原始
案例所预期的完全相同的结果

  • 它以不同的方式对待端点(即等于2000的值将产生3而不是2);及

  • 它将每千次视为不同的间隔,而5001-8000和8001+最初是聚合的

这就是说,通过采用这种方法来实现您想要的应该是非常简单的

SELECT `product_id`, `text` 
FROM `jfw_product_attribute` 
WHERE `attribute_id` =3
SELECT `product_id` ,
CASE
WHEN cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <1000
THEN 1
WHEN 1000 <= cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=2000
THEN 2
WHEN 2001 <= cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=3000
THEN 3
WHEN 3001 <= cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=4000
THEN 4
WHEN 4001 <= cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=5000
THEN 5
WHEN 5001 <= cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=8000
THEN 6
WHEN 8001 <= cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int)
THEN 7
END AS `filter_id`
FROM `jfw_product_attribute`
WHERE `attribute_id` =3
SELECT `product_id` ,
CASE
WHEN cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <1000
THEN 1
WHEN cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=2000
THEN 2
WHEN cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=3000
THEN 3
WHEN cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=4000
THEN 4
WHEN cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=5000
THEN 5
WHEN cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int) <=8000
THEN 6
WHEN 8001 <= cast( REVERSE( SUBSTRING( REVERSE( text ) , 4 ) ) as  UNSIGNED int)
THEN 7
END AS `filter_id`
FROM `jfw_product_attribute`
WHERE `attribute_id` =3