是否可以在MySQL查询中将文本转换为数字? 我有一列带有标识符的列,该标识符由名称和数字组成,格式为"名称-数字"。 该列具有VARCHAR类型。 我想根据数字(具有相同名称的行)对行进行排序,但是根据do字符顺序对列进行排序,即

name-1

name-11

name-12

name-2

如果我减少了数字,是否可以将" varchar"数字转换为"真实"数字并用它对行进行排序? 我想获得以下订单。

name-1

name-2

name-11

name-12

我无法将数字表示为单独的列。

编辑2011-05-11 9:32

我发现以下解决方案... ORDER BY column * 1。 如果名称中不包含任何数字,是否可以保存使用该解决方案?

名称完全是名称,也可以是任何字符? 我的意思是:它是一个字符串,长度为四个字符还是真名?

name可以是任何字母序列。

mysql自然排序的可能重复项

这应该工作:

您可以添加说明和文档链接吗?

我的字符串就像" name-abc12"。通过添加您的代码,它仅在"-"之后的初始字符不以字母开头时才有效。 @Marco您能告诉我一种无条件条件下忽略字母的方法吗?

@Eduardo我的查询应该在"-"之后获取字符串,并将其转换为数字(必须为数字)。就您而言,Id可能继续使用正则表达式...

@Marco正则表达式做到了,谢谢您的提示。

您可以使用SUBSTRING和CONVERT:

其中name_column是带有"名称-"值的列。 SUBSTRING删除第六个字符(即" name-"前缀)之前的所有内容,然后CONVERT将剩余的内容转换为实数。

更新:鉴于注释中环境的变化(即前缀可以是任何东西),您必须在组合中添加LOCATE:

当然,这假定非数字前缀中没有任何连字符,但相关注释指出:

name can be any sequence of letters

因此应该是一个安全的假设。

在回答我的评论时,他告诉我们名称可以是任何字符序列,因此我不确定您可以使用SUBSTRING(name_column, 6)。我知道,当他没有告诉我们这件事时,您就张贴了它。

@Marco:感谢您的注意,我添加了一个更新,该更新应注意有关前缀的新信息。但是,是的,您的SUBSTRING_INDEX更好。

只需使用CAST,

CAST(column_name AS UNSIGNED)

转换结果的类型可以是以下值之一:

您可以使用CAST()从字符串转换为int。例如SELECT CAST('123' AS INTEGER);

该版本特定吗?我需要使用SELECT CAST(123 AS SIGNED INTEGER);或SELECT CAST(123 AS UNSIGNED INTEGER);使其正常工作。

您确定ORDER BY使用num作为数字而不使用CONVERT吗?我不确定,但是可以。.我只是问自己:)

一种简单的方法SELECT'123'+ 0

尽管此代码可能有助于解决问题,但是提供有关为什么和/或如何回答问题的其他上下文将显着提高其长期价值。请编辑您的答案以添加一些说明。

这没有回答问题,但这是我一直在寻找的答案。

您的解决方案是最优雅,最实用的解决方案-不幸的是,您没有在问题的上下文中提供给定示例的特定表达方式-请对其进行修改以使其更加具体。

如果您的主键是格式如下的字符串

ABC / EFG / EE / 13/123(序列号)

这种字符串可以很容易地用delimiter(" /")进行排序

我们可以使用以下查询来订购具有此类键的表

要获取数字,请尝试使用SUBSTRING_INDEX(field, '-', 1),然后进行转换。

您需要将1更改为-1。 dev.mysql.com/doc/refman/5.0/en/

通用方法:

SELECT * FROM your_table ORDER BY LENTH(your_column) ASC, your_column ASC

mysql查询出的数据转换为数字,关于sql:在MySQL查询中将文本转换为数字相关推荐

  1. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。...

    maven使用: <!--redis jar包--><dependency><groupId>redis.clients</groupId><ar ...

  2. sql 加一列 数字_sql语句中查询出的数据添加一列,并且添加默认值

    查询出数据,并且要添加一列表中都不存在的数据,且这一列的值都是相等的 select app_id,app_secret from wx_ticket group by app_id; 查询出的数据是 ...

  3. 周末杂谈:在MYSQL中,添加数据行后,使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,表中没有的课程列值为空的解决方法

    周末杂谈:在MYSQL中,添加数据行后,使用右外连接查询所有课程的选修情况,要求列出课程编号.课程名称.选修人数,表中没有的课程列值为空的解决方法 实验前期准备 course表(课程表) 在其中: c ...

  4. 查询出的数据记录字段要与实体类中的属性名一致

    查询出的数据记录字段要与实体类中的属性名一致 转载于:https://www.cnblogs.com/1020182600HENG/p/6183031.html

  5. sql语句中查询出的数据添加一列,并且添加默认值

    查询出数据,并且要添加一列表中都不存在的数据,且这一列的值都是相等的 select app_id,app_secret from wx_ticket group by app_id; 查询出的数据是 ...

  6. mysql查询5周数据_第五周:MySQL数据库

    首先,先了解一下数据库的基本概念要点: 数据库是数据存储的集合,表示数据结构化的信息 列存储表中的信息 行存储表的明细 主键是表中的唯一标识 主键不具备业务意义 在实际操作中,对表的主键不做强制性要求 ...

  7. SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示

    通过 dba_users 表可以查询出所有的数据库用户,我下面筛选了所有 HR 开头的数据库用户,要把他们都删掉. select username from dba_users where usern ...

  8. mysql找出课程相同的两个学生_day41 mysql 学习 练习题重要

    1.查询课程编号"001"比课程编号"002" 成绩高的所有学生的学号**** #把两个表同时放过来(并且都命名一个新的名字)一起查, #1先找出所有包含学科为 ...

  9. java mysql查询字段换行,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

最新文章

  1. (pytorch-深度学习)深度循环神经网络
  2. HTML5 API详解(14):Notification 实现桌面提醒
  3. Spring源码系列:BeanFactory的创建
  4. (转)C#开发微信门户及应用(5)--用户分组信息管理
  5. VC++开发学习三(对话框之间的信息传递的方法总结)
  6. 无线传感器网络与数据交换解析
  7. check exception和uncheck exception
  8. 7-13 统计工龄 (20分)
  9. 技术管理者需要认识管理活动的高杠杆率
  10. Helio Protocol — 分布式代币借贷和流动性质押协议
  11. 因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?Link ID=135170 中的 about_Execution_Policies
  12. windows2012r2文件服务器部署,Windows server 2012部署和配置群集文件服务器
  13. AI产品经理能力模型的重点素质:人文素养和灵魂境界
  14. 用c++解一元二次方程
  15. 目标检测比赛提高mAP的方法
  16. 【JUC 并发编程】JUC 基本概念
  17. 企业为什么需要做APP安全评估?
  18. 韦东山第1期-学习笔记-1
  19. LDAP unexpected response: 500
  20. 2015-2016-1(实变函数56)

热门文章

  1. 速速收藏——程序员接私活的七大平台
  2. 重庆大学计算机学院张敏,张敏(安徽大学生命科学学院院长)_百度百科
  3. 3DMAX游戏角色装备腿部护甲建模教程(二)
  4. Lua:01---Lua语言介绍、运行Lua程序(lua解释器)
  5. [NPUCTF2020]ReadlezPHP(反序列化)
  6. vue3 provide inject用法
  7. 【图像处理算法常用数据集】整理第一弹
  8. Excel如何冻结窗口
  9. c语言求圆锥的表面积和体积_用C语言 编辑一个求圆锥体表面积与体积的代码...
  10. HTML网页内嵌入网页