博客
关于我
leetcode-mysql 2021-05-01
阅读量:321 次
发布时间:2019-03-04

本文共 3824 字,大约阅读时间需要 12 分钟。

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fix-names-in-a-table【侵删】

ExampleA:

表: Users

+----------------+---------+| Column Name    | Type    |+----------------+---------+| user_id        | int     || name           | varchar |+----------------+---------+user_id 是该表的主键。该表包含用户的 ID 和名字。名字仅由小写和大写字符组成。

 

编写一个 SQL 查询来修复名字,使得只有第一个字符是大写的,其余都是小写的。

返回按 user_id 排序的结果表。

查询结果格式示例如下:

Users table:+---------+-------+| user_id | name  |+---------+-------+| 1       | aLice || 2       | bOB   |+---------+-------+
Result table:+---------+-------+| user_id | name  |+---------+-------+| 1       | Alice || 2       | Bob   |+---------+-------+

解题思路:(concat 连接子串,substr(colname,1,1) 解释:1,1是取colname值的第一个字符  upper函数 ;lower函数;两个函数如字面意思)

select user_id, concat(upper(substr(name,1,1)),lower(substr(name,2))) from users order by user_id;

总结:每天都能学到新的知识点,但是有一个疑问?这里不是修复这个表的数据么,为什么是select 查询出来的临时表?

 

来源:力扣(LeetCode)链接:【侵删】

ExmapleB:

表:Sales

+--------------+---------+| Column Name  | Type    |+--------------+---------+| sale_id      | int     || product_name | varchar || sale_date    | date    |+--------------+---------+sale_id 是该表主键该表的每一行包含了产品的名称及其销售日期

因为在 2000 年该表是手工填写的,product_name 可能包含前后空格,而且包含大小写。

写一个 SQL 语句报告每个月的销售情况:

  • product_name 是小写字母且不包含前后空格
  • sale_date 格式为 ('YYYY-MM') 
  • total 是产品在本月销售的次数

返回结果以 product_name 升序 排列,如果有排名相同,再以 sale_date 升序 排列。

查询结果格式如下所示:

Sales表:+------------+------------------+--------------+| sale_id    | product_name     | sale_date    |+------------+------------------+--------------+| 1          |      LCPHONE     | 2000-01-16   || 2          |    LCPhone       | 2000-01-17   || 3          |     LcPhOnE      | 2000-02-18   || 4          |      LCKeyCHAiN  | 2000-02-19   || 5          |   LCKeyChain     | 2000-02-28   || 6          | Matryoshka       | 2000-03-31   | +------------+------------------+--------------+
Result 表:+--------------+--------------+----------+| product_name | sale_date    | total    |+--------------+--------------+----------+| lcphone      | 2000-01      | 2        || lckeychain   | 2000-02      | 2        | | lcphone      | 2000-02      | 1        | | matryoshka   | 2000-03      | 1        | +--------------+--------------+----------+

 

解题思路;

# 1.  先将原始表中的对应字段修改成具体的格式

# 2. (2.1 product_name 小写字母,不包含前后空格) lower trim

# 3.  时间格式的修改可以使用date_format %Y-%m  date_format(sale_date, '%Y-%m')

# 4. 然后再去修改对应的表

select lower(trim(product_name)) product_name,date_format(sale_date, '%Y-%m') sale_date, count(*) total from sales group by

lower(trim(product_name)),date_format(sale_date, '%Y-%m') order by product_name,sale_date;

 

今日新增(相关知识点):

一、可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化date值:

%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 位

二、trim函数的使用

trim函数可以过滤指定的字符串:

完整格式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
简化格式:TRIM([remstr FROM] str)

注意:both是前后,leading是首,trailing是尾

Returns the string str with all remstr prefixes or suffixes removed. If none of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is assumed. remstr is optional and, if not specified, spaces are removed.

返回去掉所有remstr前缀或后缀的字符串str。如果没有给出BOTH、LEADING或TRAILING说明符,则假定BOTH。Remstr是可选的,如果不指定,将删除空格。

 

例子:

mysql> SELECT TRIM(' bar '); //默认删除前后空格-> 'bar'mysql> SELECT TRIM(LEADING ',' FROM ',,barxxx'); //删除指定首字符 如',‘-> 'barxxx'mysql> SELECT TRIM(BOTH ',' FROM ',,bar,,,'); //删除指定首尾字符-> 'bar'mysql> SELECT TRIM(TRAILING ',' FROM 'barxxyz,,');-> 'barxxyz'

 

转载地址:http://zcdh.baihongyu.com/

你可能感兴趣的文章
6.14编一个程序,将两个字符串s1和s2比较,不要用strcmp函数。
查看>>
Java纯文本文件显示工具制作
查看>>
三、案例:留言板 & url.parse()
查看>>
LeetCode:28. 实现 strStr()——————简单
查看>>
Lionheart万汇:布林线双底形态分析技巧
查看>>
Vue使用bus进行组件间、父子路由间通信
查看>>
数据库三个级别封锁协议
查看>>
类的实例
查看>>
tomcat加载部署webapps目录下的项目
查看>>
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
查看>>
方法重写
查看>>
Threading Programming Guide(多线程编程指南)
查看>>
Java求逆波兰表达式的结果(栈)
查看>>
SDWebImage--http图片加载不出来的问题
查看>>
Application received signal SIGSEGV
查看>>
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
查看>>
SLAM学习笔记-求解视觉SLAM问题
查看>>
普歌-允异团队-HashMap面试题
查看>>
还在一个一个手动安装虚拟机吗?Cobbler自动部署装机一键最小化安装打把游戏就好了
查看>>
程序员应该知道的97件事
查看>>