目录

thinkphpmysqlcast解决text类型字段的文本型数字排序错误的方法-数据库文本字段排序ASCDESC的失效问题

thinkphp+mysql+cast解决text类型字段的文本型数字排序错误的方法 - 数据库文本字段排序ASC、DESC的失效问题

TP中使用cast + order

https://i-blog.csdnimg.cn/direct/05a2bf7c4edf4beb84513c47e1a205a8.png

$lists = AmdCommonTable::where(…………..)

->field(’*,CAST(w6 AS UNSIGNED) as sort')

->order(‘sort’, ‘asc’)

->select()

->toArray();

先转换为数字,再order by

效果对比

**(1/2)

不ok**

  • 直接order by 某字段 asc - 只能按照文本排序

其中w6字段类型:w6 TEXT

SELECT id,w6 FROM xx ORDER BY w6 ASC

https://i-blog.csdnimg.cn/direct/9f1addea3be04ec0a87394447b2f5e3d.png

(2/2)

ok

  • 使用cast方法转换“文本”字段为"数字",再order by排序

SELECT *,CAST(w6 AS UNSIGNED) as sort FROM xx ORDER BY sort ASC

https://i-blog.csdnimg.cn/direct/4397e1102d5241daa73de75298c16bc2.png

感谢

[MySQL把字符串转化为数字的三种方式[通俗易懂]-腾讯云开发者社区-腾讯云

首先,我想到的是类似于between and,我以为也是比较的首字母,不过后面我发现并不是的。

https://csdnimg.cn/release/blog_editor_html/release2.3.8/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=P1C7 “MySQL把字符串转化为数字的三种方式[通俗易懂]-腾讯云开发者社区-腾讯云”) [Thinkphp5中使用mysql的concat函数_tp5 concat-CSDN博客

文章浏览阅读1.9k次。需要注意你的TP版本 如果是5.0.18+ 需要使用新的写法这里我用的5.0.21版 也用它作为演示1.update在原有字符的基础上添加新字符db(‘a’)->where(‘id’, 1)->update([’name’ => Db::raw(‘concat(name,“在原来的字符上追加新的字符”)’)])2…._tp5 concat

https://g.csdnimg.cn/static/logo/favicon32.ico “Thinkphp5中使用mysql的concat函数_tp5 concat-CSDN博客”)