thinkphpmysqlcast解决text类型字段的文本型数字排序错误的方法-数据库文本字段排序ASCDESC的失效问题
目录
thinkphp+mysql+cast解决text类型字段的文本型数字排序错误的方法 - 数据库文本字段排序ASC、DESC的失效问题
TP中使用cast + order
$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 BYw6
ASC
(2/2)
ok
- 使用cast方法转换“文本”字段为"数字",再order by排序
SELECT *,CAST(w6 AS UNSIGNED) as sort FROM
xx
ORDER BYsort
ASC
感谢
[MySQL把字符串转化为数字的三种方式[通俗易懂]-腾讯云开发者社区-腾讯云
首先,我想到的是类似于between and,我以为也是比较的首字母,不过后面我发现并不是的。
“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
“Thinkphp5中使用mysql的concat函数_tp5 concat-CSDN博客”)