尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

【MySQL】函数

【MySQL】函数 函数*1.日期函数* 2.字符串函数* 3.数学函数* 4.其他函数点赞???收藏???关注??? 你的支持是对我最大的鼓励我们一起努力吧???在mysql中其实内置了很多的函数操作这些函数可以让我们在数据统计的时候以及查表的时候进行各自各样的操作。1.日期函数------函数名称描述current_date()当前日期current_time()当前时间current_timestamp()当前时间戳date(datetime)返回datetime参数的日期部分date_add(dateinterval d_value_type)在date中添加日期或者时间 interval后的数值单位可以是year、minute、second、daydate_sub(dateinterval d_value_type)在date中减去日期或者时间 interval后的数值单位可以是year、minute、second、daydatediff(date1date2)两个日期的差单位是天now()当前日期时间获得当前日期(年月日)select current_date();获得当前时间(时分秒)select current_time();获得当前时间戳select current_timestamp();获得当前日期时间select now();截断当前时间只获得日期部分select date(now());函数中可以嵌套函数在日期的基础上加日期select date_add(now(),interval 10 year);在日期的基础上减去时间select date_sub(now(),interval 10 minute);计算两个日期之间相差多少天select datediff(now(),‘1949-10-01’); 前面减后面这些函数有什么用呢下面有两个案例创建一张表记录生日create table tmp( id int primary key auto_increment, birthday date not null #时间的类型 年月日 );虽然current_time()这里显示的是时分秒实际上插入的时候也能插入所有的时间在获取的时候都是年月日 时分秒只不过显示时是不一样的。但是不建议这样使用。这里时间戳也能插入你可以理解成隐式类型转化birthday要的是date日期类型那么只要你有日期就会把日期拿到。建议还是匹配着使用创建一个留言表平常我们评论的时候不仅有内容显示出来还有对应的时间。 create table msg( id int primary key auto_increment, content varchar(100) not null, sendtime datetime #日期时间 年月日 时分秒 ); 这就是根据时间类型建立带时间的表结构显示所有留言信息发布日期只显示日期不用显示时间select content,date(sendtime) from msg;请查询在2分钟内发布的帖子怎么确认表中的数据是2min以内的select * from msg where date_add(sendtime,interval 2 minute)now();2.字符串函数-------函数名称描述charset(str)返回字符串字符集(编码集)concat(string [,…])连接字符串instr(stringsubstring)返回substring在strign中出现的位置没有就返回0ucase(string)转换成大写lcase(string)转换成小写left(stringlength)从string中的左边起取length个字符right(stringlength)从string中的右边起取length个字符length(string)string的长度replace(strsearch_strreplace_str)在str中用replace_str替换search_strstrcmp(string1string2)逐字符比较两字符串大小substring(strposition [,length])从str的position开始取length个字符ltrim(string) rtrim(string) trim(string)去除前空格或者后空格 charset(str) 返回字符串字符集(编码集)获取emp表的ename列的字符集select charset(ename) from emp; 根据字符串得到编码格式万一表中乱码了可以确认mysql本身编码格式以及插入mysql表中特定字段的编码格式。 concat(string [,…]) 连接字符串要求显示exam_result表中的信息显示格式“XXX的语文是XXX分数学XXX分英语XXX分”select concat(name,‘的语文是’,chinese,‘分,’,‘数学’,‘math’,‘分,’,‘英语’,english,‘分’) from exam_result; instr(stringsubstring)返回substring在strign中出现的位置没有就返回0注意细节没有就返回0因为出错返回是0所以位置是从1开始的。 ucase(string)转换成大写 lcase(string)转换成小写 left(stringlength) 从string中的左边起取length个字符 right(stringlength) 从string中的右边起取length个字符 length(string) string的长度求学生表中学生姓名占用的字节数select length(name) from exam_result;以前说过mysql的字符真的就是一个字符utf8中一个汉字占3个字节。length函数返回字符串长度以字节为单位。如果是多字节字符则计算多个字节数如果是单字节字符则算作一个字节。比如字母数字算作一个字节中文表示多个字节数与字符集编码有关 replace(strsearch_strreplace_str) 在str中用replace_str替换search_str将EMP表中所有名字中有S的替换成’上海’在怎么换实际只是字符串级别的更换并不会更改数据库中原始数据 substring(strposition [,length]) 从str的position开始取length个字符从特定位置开始截取length长字符串如果没有指明length就默认截取到结尾截取EMP表中ename字段的第二个到第三个字符select ename,substring(ename,2,2) from emp;以首字母小写的方式显示所有员工的姓名首先将名字首字母和剩下的区分开然后将首字母变成小写然后在拼接 select ename,concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp; ltrim(string) rtrim(string) trim(string)去除前空格或者后空格3.数学函数------函数名称描述abs(number)绝对值函数bin(decimal_number)十进制转换二进制hex(decimalNumber)转换成十六进制conv(numberfrom_base,to_base)进制转换ceiling(number)向上去整floor(number)向下去整format(numberdecimal_places)格式化保留小数位数rand()返回随机浮点数返回[0.01.0)mod(number,denominator)取模求余 abs(number) 绝对值函数 bin(decimal_number) 十进制转换二进制 hex(decimalNumber) 转换成十六进制 conv(numberfrom_base,to_base) 进制转换 format(numberdecimal_places) 格式化保留小数位数 rand()|返回随机浮点数返回[0.01.0) mod(number,denominator) 取模求余 ceiling(number) 向上去整 floor(number) 向下去整一般我进行取整的时候是进行四舍五入取整但是除了四舍五入还有其他的取整方式。 我们把丢弃小数部分的取整方式称为0向取整以前我们在C学的9/24 就是0向取整、还有向大的方向取的向上取整、向小的方向取的向下取整4.其他函数------user() 查询当前用户select user();database()显示当前正在使用的数据库select database();md5(str)对一个字符串进行md5摘要摘要后得到一个32位字符串比如密码在数据库绝对不能是明文保存的。万一表结构泄漏了用户信息就全部被泄漏了。这里有一个细节mysql对于sql里面涉及核心密码password关键字之类的这个sql语句就不会被保存不能上翻下翻了密码被变成固定32位字符串就不用担心密码被泄漏了。但是登录的时候也必须是数据库的摘要密码。除了md5进行保存密码之外数据库还提供更复杂的密码设定的函数。password()函数MySQL数据库使用该函数对用户加密在数据库设密码通常用的更多的是password()ifnullval1 val2 如果val1为null返回val2否则返回val1的值类似于三目操作符 : 为真返回第一个为假返回第二个
返回列表