mysql查询结果加自定义字段、查询结果修改字段名称、批量修改字段的值、查询一个字段的是否有多个值、时间与字符串之间相互转换

我的操作需求:

1、查询出的结果,加一个自定义的字段和数据?

SELECT  * , 100 as cc FROM tab;   # 增加cc字段 值是100

select realname, user_id, 'user' as type from ds_user;

2、查询出的结果,修改字段的名称?

3、查询出的结果,在查询出的数据的基础上修改数据的值?

4、mysql查询结果null值处理问题

select IFNULL(‘可能有空值的列’,‘为空值时默认的值(数据类型记得对上)’) from table
例;SELECT IFNULL(zt,0),dctm FROM tb_battery_old_table

5、查询一个字段的是否有多个值

可以写in(1,2,3) 或者分开查询union all 查询结果

select user_Email from ds_user where user_id in (1,3,24,56,93,98) and user_name!="";

6、以id分组,把name字段的值打印在一行,分号分隔 

关键字:group_concat              separator :分隔符         CONCAT():用于将多个字符串连接成一个字符串

select  id,group_concat(name  separator  ' ; ')   from table group by id 

7、一个字段有多个参数传递进来,应该如何写。

关键字:or  (or:或者)

select *  from table where name = "参数值1"   or    name = "参数值2"

8、一个列有多个值,查询字段中是否包含某个值

   关键字:find_in_set    (find:查找)

select *  from table where find_in_set('admin',username)

9、一个字段多个值,修改其中的一个

关键字:replace    (replace:修改  替换)

update table set username= replace(username,'原来的值’,‘新的值’)

10、一个字段中添加新的值,使用 “ ,” 隔开

关键字 :  concat  (concat:合并多个数组;合并多个字符串)

update table set username= concat(username,    ' ,要增加的值 '   )

11、删除指定的字段

关键字 : replace (replace : 替换  修改)

update table set username = replace(username,     '1,' ," "   )

参考资料:https://blog.csdn.net/Q927920568/article/details/84563529#commentBox
 

12、需求:之前汉字转拼音时候发觉有个字母ü转换错了,应该是v才对,实际上ü也没错,但是在计算机拼音中ü是用v表示的,所以要把表中的ü全部转换为v

在这里插入图片描述

写出来了发现报错了。

You can’t specify target table for update in FROM clause 这个错误的意思是不能在同一个sql语句中,先select同一个表的某些值,然后再update这个表。
解决方法:给查询加别名,用中间表来实现不是对同一表作操作。

update bxkc_keyword_dict set pinyin=replace(pinyin,‘lu:’,‘lv’) where pinyin
in(select * from(SELECT pinyin from bxkc_keyword_dict WHERE pinyin LIKE’%lu:%’) a)
 

 

例如我查出来的结果:

| 字段1 | 字段2 |

| 值1 | 值2 |

我想要在结果集中增加一个字段,这个字段是表中没有的,值是固定的,

例如:

| 字段1 | 字段2 | 新增字段 |

| 值1 | 值2 | 值固定 |

例如:

| 字段1 | 更改后的字段2 | 新增字段 |

| 值1 | 值2 | 值固定 |

解决措施

假设你的表名为tab1,只有字段为a,b,想在查询结果中新增字段c(固定值为100),可以这样写:

SELECT T.*,100 as c FROM tab1 T;

若100为字符串则是:

SELECT T.a,T.b,'100' as c FROM tab1 T;
举例:

在这里插入图片描述

 

 

  • 时间与字符串之间相互转换

1.时间转字符串

DATE_FORMAT(日期,格式字符串)

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');

 

date_format(date,format):日期转字符串
select date_format('2008-08-08 08:08:08', '%Y%m%d%H%i%s');
  

 time_format(time,format):时间转字符串
select time_format('08:08:08', '%H%i%s');
   

2.字符串转时间

STR_TO_DATE(字符串,日志格式)

SELECT STR_TO_DATE('2019-01-20 16:01:45', '%Y-%m-%d %H:%i:%s');

字符串类型转换成日期/时间类型

str_to_date(str, format):


select str_to_date('18/08/08' , '%y/%m/%d'); -- 2018-08-08

select str_to_date('2018/08/08', '%Y/%m/%d'); -- 2018-08-08

select str_to_date('08:08:08', '%h:%i:%s'); -- 08:08:08

select str_to_date('2018.08.08 08:08:08', '%Y.%m.%d %h:%i:%s'); -- 2018-08-08 08:08:08

select str_to_date('2018-08-08 08:08:08', '%Y-%m-%d %H:%i:%s'); -- 2018-08-08 08:08:08

3.时间转时间戳

select unix_timestamp(now());

4.字符串转时间戳

select unix_timestamp('2019-01-20');  

5.时间戳转字符串

select from_unixtime(1451997924,'%Y-%d');

附日期格式如下:

格式    描述
%a    缩写星期名
%b    缩写月名
%c    月,数值
%D    带有英文前缀的月中的天
%d    月的天,数值(00-31)
%e    月的天,数值(0-31)
%f    微秒
%H    小时 (00-23)
%h    小时 (01-12)
%I    小时 (01-12)
%i    分钟,数值(00-59)
%j    年的天 (001-366)
%k    小时 (0-23)
%l    小时 (1-12)
%M    月名
%m    月,数值(00-12)
%p    AM 或 PM
%r    时间,12-小时(hh:mm:ss AM 或 PM)
%S    秒(00-59)
%s    秒(00-59)
%T    时间, 24-小时 (hh:mm:ss)
%U    周 (00-53) 星期日是一周的第一天
%u    周 (00-53) 星期一是一周的第一天
%V    周 (01-53) 星期日是一周的第一天,与 %X 使用
%v    周 (01-53) 星期一是一周的第一天,与 %x 使用
%W    星期名
%w    周的天 (0=星期日, 6=星期六)
%X    年,其中的星期日是周的第一天,4 位,与 %V 使用
%x    年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y    年,4 位
%y    年,2 位

%M 月名字(January……December)  
%W 星期名字(Sunday……Saturday)  
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)  
%Y 年, 数字, 4 位  
%y 年, 数字, 2 位  
%a 缩写的星期名字(Sun……Sat)  
%d 月份中的天数, 数字(00……31)  
%e 月份中的天数, 数字(0……31)  
%m 月, 数字(01……12)  
%c 月, 数字(1……12)  
%b 缩写的月份名字(Jan……Dec)  
%j 一年中的天数(001……366)  
%H 小时(00……23)  
%k 小时(0……23)  
%h 小时(01……12)  
%I 小时(01……12)  
%l 小时(1……12)  
%i 分钟, 数字(00……59)  
%r 时间,12 小时(hh:mm:ss [AP]M)  
%T 时间,24 小时(hh:mm:ss)  
%S 秒(00……59)  
%s 秒(00……59)  
%p AM或PM  
%w 一个星期中的天数(0=Sunday ……6=Saturday )  
%U 星期(0……52), 这里星期天是星期的第一天  
%u 星期(0……52), 这里星期一是星期的第一 
 
————————————————
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值