MySQL 数字类型转换函数(concat/cast)。
1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80′。
2、将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串。
总结:类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型)。
扩展资料:
可用的类型:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
cast函数运行示例
参考资料:mysql-百度百科
字符串类型的数字默认在比较大小时,往往会遇到一些坑,例如:在10和9比较大小时字符串类型的数字会以为9比10大,但事实上我们想要比较的结果是10>9,这是为什么呢?其实字符串在比较大小时,比较的是它对应的ASCII码,1的ASCII码比9对应的ASCII码小,系统就会认为10<9。 这时我们可以使用MySQL的 CAST() 函数,将想要转换的字符串转换成想要的类型。
例如:字符串‘123.45’可以转成整数,DECIMAL默认取得整数,也可以使用SIGNED
当然也可以指定小数位数,5代表了要取的数字位数(整数位和小数位和),2代表要取到的小数位数。
转换完成就可以用来进行后期的数值比较了!
你这两个都不是字符串的比较函数呀。MYSQL的字符串比较函数如下:
通常,如果在字符串比较中的任何表达式是区分大小写的,比较以大小写敏感的方式执行。
expr LIKE pat [ESCAPE 'escape-char']
使用SQL的简单的正规表达式比较的模式匹配。返回1(TRUE)或0(FALSE)。用LIKE,你可以在模式中使用下列2个通配符字符: % 匹配任何数目的字符,甚至零个字符
_ 精确匹配一个字符
mysql>select 'David!' LIKE 'David_'
->1
mysql>select 'David!' LIKE '%D%v%'
->1
为了测试一个通配符的文字实例,用转义字符的加在字符前面。如果你不指定ESCAPE字符,假定为“\”:
\% 匹配一%字符
\_ 匹配一_字符
mysql>select 'David!' LIKE 'David\_'
->0
mysql>select 'David_' LIKE 'David\_'
->1
为了指定一个不同的转义字符,使用ESCAPE子句:
mysql>select 'David_' LIKE 'David|_' ESCAPE '|'
->1
LIKE允许用在数字的表达式上!(这是MySQL对ANSI SQL LIKE的一个扩充。)
mysql>select 10 LIKE '1%'
->1
注意:因为MySQL在字符串中使用C转义语法(例如,“\n”),你必须在你的LIKE字符串中重复任何“\”。例如,为了查找“\n”,指定它为“ \\n”,为了查找“\”,指定它为“\\\\”(反斜线被分析器剥去一次,另一次是在模式匹配完成时,留下一条单独的反斜线被匹配)。
expr NOT LIKE pat [ESCAPE 'escape-char']
与NOT (expr LIKE pat [ESCAPE 'escape-char'])相同。
expr REGEXP pat
expr RLIKE pat
执行一个字符串表达式expr对一个模式pat的模式匹配。模式可以是一个扩充的正则表达式。见MySQL 正则表达式句法的 H 描述.如果expr匹配pat,返回1,否则返回0。RLIKE是REGEXP的一个同义词,提供了与mSQL的兼容性。注意:因为MySQL在字符串中使用C转义语法(例如,“\n”), 你必须在你的REGEXP字符串重复任何“\”。在MySQL3.23.4中,REGEXP对于正常的(不是二进制)字符串是忽略大小写。
mysql>select 'Monty!' REGEXP 'm%y%%'
->0
mysql>select 'Monty!' REGEXP '.*'
->1
mysql>select 'new*\n*line' REGEXP 'new\\*.\\*line'
->1
mysql>select "a" REGEXP "A", "a" REGEXP BINARY "A"
->1 0
当决定一个字符的类型时,REGEXP和RLIKE使用当前的字符集(缺省为ISO-8859-1 Latin1)。
expr NOT REGEXP pat
expr NOT RLIKE pat
与NOT (expr REGEXP pat)相同。
STRCMP(expr1,expr2)
如果字符串相同,STRCMP()回来0,如果第一参数根据当前的排序次序小于第二个,返回-1,否则返回1。
mysql>select STRCMP('text', 'text2')
->-1
mysql>select STRCMP('text2', 'text')
->1
mysql>select STRCMP('text', 'text')
->0
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)