mysql字符串转数字类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql字符串转数字类型相关的知识,希望对你有一定的参考价值。
急:mysql查询结果字符串的排序问题
你的“中文”是固定的文字吗?
--下面的语句只支持9999以下的数字排序
selectid,col,right(col,length(col)-LEAST(
if(Locate(0,col)>0,Locate(0,col),9999),
if(Locate(1,col)>0,Locate(1,col),9999),
if(Locate(2,col)>0,Locate(2,col),9999),
if(Locate(3,col)>0,Locate(3,col),9999),
if(Locate(4,col)>0,Locate(4,col),9999),
if(Locate(5,col)>0,Locate(5,col),9999),
if(Locate(6,col)>0,Locate(6,col),9999),
if(Locate(7,col)>0,Locate(7,col),9999),
if(Locate(8,col)>0,Locate(8,col),9999),
if(Locate(9,col)>0,Locate(9,col),9999)
)-1)*1a
fromtest4orderbya
没有,就一个注释而已,没有中文。这个答案不大理想,有没有其他的解决办法?
本回答由提问者推荐
mysql 既按照字段里的数字排序,又按照字段里的首字母排序,sql能写吗
如果是oracle的话,创建下面的函数,调用函数做视图可以实现你要的效果
CREATEORREPLACEFUNCTIONF_TRANS_PINYIN_CAPITAL(P_NAMEINVARCHAR2)RETURNVARCHAR2AS
V_COMPAREVARCHAR2(100);
V_RETURNVARCHAR2(4000);
FUNCTIONF_NLSSORT(P_WORDINVARCHAR2)RETURNVARCHAR2AS
BEGIN
RETURNNLSSORT(P_WORD,NLS_SORT=SCHINESE_PINYIN_M);
BEGIN
FORIIN1..LENGTH(P_NAME)LOOP
V_COMPARE:=F_NLSSORT(SUBSTR(P_NAME,I,1));
IFV_COMPARE>=F_NLSSORT(吖)ANDV_COMPARE<=F_NLSSORT(骜)THEN
V_RETURN:=V_RETURN||a;
ELSIFV_COMPARE>=F_NLSSORT(八)ANDV_COMPARE<=F_NLSSORT(簿)THEN
V_RETURN:=V_RETURN||b;
ELSIFV_COMPARE>=F_NLSSORT(嚓)ANDV_COMPARE<=F_NLSSORT(错)THEN
V_RETURN:=V_RETURN||c;
ELSIFV_COMPARE>=F_NLSSORT(咑)ANDV_COMPARE<=F_NLSSORT(鵽)THEN
V_RETURN:=V_RETURN||d;
ELSIFV_COMPARE>=F_NLSSORT(妸)ANDV_COMPARE<=F_NLSSORT(樲)THEN
V_RETURN:=V_RETURN||e;
ELSIFV_COMPARE>=F_NLSSORT(发)ANDV_COMPARE<=F_NLSSORT(猤)THEN
V_RETURN:=V_RETURN||f;
ELSIFV_COMPARE>=F_NLSSORT(旮)ANDV_COMPARE<=F_NLSSORT(腂)THEN
V_RETURN:=V_RETURN||g;
ELSIFV_COMPARE>=F_NLSSORT(妎)ANDV_COMPARE<=F_NLSSORT(夻)THEN
V_RETURN:=V_RETURN||h;
ELSIFV_COMPARE>=F_NLSSORT(丌)ANDV_COMPARE<=F_NLSSORT(攈)THEN
V_RETURN:=V_RETURN||j;
ELSIFV_COMPARE>=F_NLSSORT(咔)ANDV_COMPARE<=F_NLSSORT(穒)THEN
V_RETURN:=V_RETURN||k;
ELSIFV_COMPARE>=F_NLSSORT(垃)ANDV_COMPARE<=F_NLSSORT(擽)THEN
V_RETURN:=V_RETURN||l;
ELSIFV_COMPARE>=F_NLSSORT(呒)ANDV_COMPARE<=F_NLSSORT(椧)THEN
V_RETURN:=V_RETURN||m;
ELSIFV_COMPARE>=F_NLSSORT(拏)ANDV_COMPARE<=F_NLSSORT(疟)THEN
V_RETURN:=V_RETURN||n;
ELSIFV_COMPARE>=F_NLSSORT(筽)ANDV_COMPARE<=F_NLSSORT(沤)THEN
V_RETURN:=V_RETURN||o;
ELSIFV_COMPARE>=F_NLSSORT(妑)ANDV_COMPARE<=F_NLSSORT(曝)THEN
V_RETURN:=V_RETURN||p;
ELSIFV_COMPARE>=F_NLSSORT(七)ANDV_COMPARE<=F_NLSSORT(裠)THEN
V_RETURN:=V_RETURN||q;
ELSIFV_COMPARE>=F_NLSSORT(亽)ANDV_COMPARE<=F_NLSSORT(鶸)THEN
V_RETURN:=V_RETURN||r;
ELSIFV_COMPARE>=F_NLSSORT(仨)ANDV_COMPARE<=F_NLSSORT(蜶)THEN
V_RETURN:=V_RETURN||s;
ELSIFV_COMPARE>=F_NLSSORT(侤)ANDV_COMPARE<=F_NLSSORT(箨)THEN
V_RETURN:=V_RETURN||t;
ELSIFV_COMPARE>=F_NLSSORT(屲)ANDV_COMPARE<=F_NLSSORT(鹜)THEN
V_RETURN:=V_RETURN||w;
ELSIFV_COMPARE>=F_NLSSORT(夕)ANDV_COMPARE<=F_NLSSORT(鑂)THEN
V_RETURN:=V_RETURN||x;
ELSIFV_COMPARE>=F_NLSSORT(丫)ANDV_COMPARE<=F_NLSSORT(韵)THEN
V_RETURN:=V_RETURN||y;
ELSIFV_COMPARE>=F_NLSSORT(帀)ANDV_COMPARE<=F_NLSSORT(咗)THEN
V_RETURN:=V_RETURN||z;
ENDIF;
ENDLOOP;
RETURNV_RETURN;
本回答由网友推荐
c语言中如何将数字转换为字符串?
#include#includechar*digitToAlpha(intval,char*buf,unsignedradix);intmain(intargc,char*argv[])intiNum=55;charstrNum[10]="";digitToAlpha(iNum,strNum,10);printf("%s\\n",strNum);system("PAUSE");return0;*功能:将数值转换为字符串参数:第一个是要转化的整数
c语言中如何将数字转换为字符串?
#include#includechar*digitToAlpha(intval,char*buf,unsignedradix);intmain(intargc,char*argv[])intiNum=55;charstrNum[10]="";digitToAlpha(iNum,strNum,10);printf("%s\\n",strNum);system("PAUSE");return0;*功能:将数值转换为字符串参数:第一个是要转化的整数
Mysql字符串中有数字的排序问题
SELECT id, col,LENGTH(col) FROM d ORDER BY LENGTH(col) ASC, col ASC
SELECT id,col FROM d ORDER BY CAST(TRIM(中文 FROM col) AS SIGNED)
根据实际情况看吧你的“中文”是固定的文字吗?
--下面的语句只支持9999以下的数字排序
select id,col, right(col,length(col)-LEAST(
if(Locate(0,col) >0,Locate(0,col),9999),
if(Locate(1,col) >0,Locate(1,col),9999),
if(Locate(2,col) >0,Locate(2,col),9999),
if(Locate(3,col) >0,Locate(3,col),9999),
if(Locate(4,col) >0,Locate(4,col),9999),
if(Locate(5,col) >0,Locate(5,col),9999),
if(Locate(6,col) >0,Locate(6,col),9999),
if(Locate(7,col) >0,Locate(7,col),9999),
if(Locate(8,col) >0,Locate(8,col),9999),
if(Locate(9,col) >0,Locate(9,col),9999)
)-1) *1 a
from test4 order by aselect * from 表名 order by substring(col,3,2)+0;select id, col from tableName order by length(col) asc, col asc你的“中文”是固定的文字吗?
--下面的语句只支持9999以下的数字排序
select id,col, right(col,length(col)-least(
if(locate(0,col) >0,locate(0,col),9999),
if(locate(1,col) >0,locate(1,col),9999),
if(locate(2,col) >0,locate(2,col),9999),
if(locate(3,col) >0,locate(3,col),9999),
if(locate(4,col) >0,locate(4,col),9999),
if(locate(5,col) >0,locate(5,col),9999),
if(locate(6,col) >0,locate(6,col),9999),
if(locate(7,col) >0,locate(7,col),9999),
if(locate(8,col) >0,locate(8,col),9999),
if(locate(9,col) >0,locate(9,col),9999)
)-1) *1 a
from test4 order by aselect id,col from tablename order by col+0 asc;
mysql数据库数据怎么实现排序输出
select * from 百米成绩表 order by mark asc
order by 的意思是排序,你的mark应该是一个字符串类型的字段(如果是oracle的话应该是varchar2) order by 跟的是一个字段,意思是按照这个字段进行排序,字符串的排序,会挨个比对第一个字符,然后第二个字符,然后以此类推,asc 是代表正序,就是小的在上,desc是倒序,
不过这里存在问题,如果秒数都是两位数倒是好说,但是如果秒数是1位数 比如9秒00 那么在第二位排序的时候就会用秒字跟其他数字相比较,会出问题的,建议规范格式,强制要求秒数位数固定,或者干脆这个字段用数字来代替,比如11秒97,让他秒数变成1197,数字比大小是不会出现问题的。mysql中排序输出需要用order by。
如图,test表中有如下数据:
现在分别要求按id正序和倒序输出结果。
select * from test order by id;结果:
select * from test order by id desc;结果:
以上是关于mysql字符串转数字类型的主要内容,如果未能解决你的问题,请参考以下文章