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字符串转数字类型的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 字符串转数字类型

mysql字符串转数字类型

MySQL 数据类型(转)

mysql字符串转日期函数

(转)MySQL字段类型详解

Swift 字符串转数字