Django mysql的一些使用方法(字段合并,特殊字符转译,字段分割多行显示)

1. mysql中合并两个字符串

select concat(a.empno,’/’,a.user_id,’/’,a.username) as newcolumn from table as a

  • 将table中,字段empno,user_id,username的串进行合并,并使用分隔符‘/’连接起来,并存储到一个新列中;
  • 在Django中,view模块查询数据并显示,特殊符号需要进行转译
    ==Django View Mysql: ==
    select concat(a.empno,’/\’,a.user_id,’/\’,a.username) as newcolumn from table as a

2. 判断字段中是否含有某一字符串


case
when b.email like ‘%%partner%%’ then ‘Partber’ *如果字段中含有字符partner
locate(‘partner’,b.email)=0 then ‘Samsung’ *如果字段中含有partner, ->1; 如果字段中不含有partner,->0
end
)as employee

Django view 中:
def workstatus(request):

datasql="select a.id,a.drecorddate,c.empno,c.username,a.team_id,a.group_id,"\
        "(case  when b.email like '%%partner%%' then 'Partner' when locate('partner',b.email)=0 then 'Samsung' end) as Employee,"\
        "(case when a.vacationtime=8 then 'No' when a.vacationtime<8 then 'Yes'  end) as work_status,"\
        "'Home' as work_location,a.project_id,a.task_id,a.designtime,a.executiontime "\
        "from wm_dailyrecord as a,auth_user as b,wm_personalinfo as c "\
        "where a.drecorddate>'2019-03-08' and a.user_id=c.user_id and a.user_id=b.username"\
        
workingdata = Dailyrecord.objects.raw(datasql) 
print(datasql)
print(workingdata)
return render(request,'WorkData.html',{"workingdata":workingdata,})

3. mysql中将一个字段进行分割,然后多行显示

select DISTINCT substring_index(substring_index(t.participant,’、’, b.help_topic_id + 1), ‘、’, -1) as user
from wm_training t join mysql.help_topic b ON b.help_topic_id < (LENGTH(t.participant) -LENGTH(REPLACE(t.participant, ‘、’, ‘’)) + 1)

  • distinct 去除重复的
  • 字段:“张三、李四”
  • 分割显示:
    *张三
    *李四

Mysql中:
Django mysql的一些使用方法(字段合并,特殊字符转译,字段分割多行显示)_第1张图片

Django View Mysql:

sql1 = "(SELECT DISTINCT "\
        "(case WHEN (ISNULL(t.participant)=1) || (LENGTH(trim(t.participant))=0) THEN  t.host  WHEN ISNULL(t.participant)=0 THEN  substring_index(substring_index(t.participant,'、', b.help_topic_id + 1), '、', -1) end ) as userlist,"\
        "t.id,t.trainingtype_id,t.status,t.trainingname,t.startdate,t.enddate,t.hour,t.host "\
        "FROM wm_training t join mysql.help_topic b ON b.help_topic_id <  (LENGTH(t.participant) - LENGTH(REPLACE(t.participant, '、', '')) + 1)"\
        ")as w "\
        
        
sql2 = "(select w.id,a.user_id,(concat(a.empno,'/\',a.user_id,'/\',a.username)) as user,w.trainingname,w.trainingtype_id,w.status,w.startdate,w.enddate,w.hour,w.host,w.userlist "\
       "from wm_personalinfo as a, " + sql1+ \
       "where a.username = w.userlist"\
       ") as d "\

datasql = "select DISTINCT d.id,c.team_id,c.group_id,d.user,d.trainingtype_id,d.status,d.trainingname,d.startdate,d.enddate,d.hour,d.host "\
        "from wm_dailyrecord as c," +sql2+ \
        "WHERE d.user_id = c.user_id"\

你可能感兴趣的:(Django,学习记录,mysql)