【SQL】统一字符格式

目录

语法

需求

示例

分析

代码


语法

substring(column_name, start, length)用于从一个字符串中提取子字符串

  • column_name(或任何字符串表达式):这是要从中提取子字符串的列名或字符串表达式。
  • start:这是子字符串开始的位置。注意,这个位置是基于1的索引(在大多数SQL方言中,尽管某些语言或框架可能使用基于0的索引),并且如果start是负数,那么它的解释会依赖于具体的SQL数据库系统。
  • length(可选):这是要提取的子字符串的长度。如果省略这个参数,那么从start位置开始直到原字符串的末尾的所有字符都会被提取。

upper(expression)

  • 用于将指定的字符串表达式(expression)中的所有字母字符转换为大写。expression 可以是列名、字符串常量、另一个函数的返回结果,或者是这些元素通过运算符连接起来的表达式。

lower(expression)

  • 用于将指定的字符串表达式(expression)中的所有字母字符转换为小写。expression 可以是列名、字符串常量、另一个函数的返回结果,或者是这些元素通过运算符连接起来的表达式。

concat(string1, string2, ...)

  • string1, string2, ..., stringN:这是要连接的一个或多个字符串参数。
  • 用于将两个或多个字符串值连接成一个字符串。这个函数可以接受两个或更多的字符串参数,并将它们按照指定的顺序连接成一个新的字符串。如果任何参数是 NULL,那么整个concat函数的结果也将是 NULL
  • 在某些数据库系统中,比如 MySQL,从 5.7.6 版本开始,如果任何参数是 NULL,则会被视为空字符串 '',而不会影响其他非 NULL 参数的连接

需求

表: Users

复制代码
+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| user_id        | int     |
| name           | varchar |
+----------------+---------+
user_id 是该表的主键(具有唯一值的列)。
该表包含用户的 ID 和名字。名字仅由小写和大写字符组成。

编写解决方案,修复名字,使得只有第一个字符是大写的,其余都是小写的。

返回按 user_id 排序的结果表。

示例

复制代码
输入:
Users table:
+---------+-------+
| user_id | name  |
+---------+-------+
| 1       | aLice |
| 2       | bOB   |
+---------+-------+
输出:
+---------+-------+
| user_id | name  |
+---------+-------+
| 1       | Alice |
| 2       | Bob   |
+---------+-------+

分析

使得只有第一个字符是大写的

通过substring(name,1,1)选取第一个字符,然后通过upper使得其为大写,upper(substring(name,1,1))

或者通过left(name, 1)选取第一个字符

其余字符都是小写的

其他字符即第一个字符以后的所有字符,通过substring(name,2)选取第二个字符及其之后的字符,通过lower使得它们变为小写形式,lower(substring(name,2))

拼接字符

字符分开处理后通过concat进行拼接,concat(upper(substring(name,1,1)), lower(substring(name,2)))

返回按 user_id 排序的结果

通过order by进行排序,order by user_id

代码

select user_id, concat(upper(substring(name,1,1)), lower(substring(name,2))) name
from Users
order by user_id

或者字符选取部分可通过left(name, 1)和right(name, length(name) - 1)实现

select user_id, concat(upper(left(name, 1)), lower(right(name, length(name) - 1))) name
from Users
order by user_id
相关推荐
苹果酱05671 小时前
「Mysql优化大师一」mysql服务性能剖析工具
java·vue.js·spring boot·mysql·课程设计
Minxinbb1 小时前
MySQL中Performance Schema库的详解(上)
数据库·mysql·dba
滚雪球~1 小时前
2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36)
mysql·navicat
mmsx2 小时前
android sqlite 数据库简单封装示例(java)
android·java·数据库
zpjing~.~3 小时前
Mongo 分页判断是否有下一页
数据库
2401_857600953 小时前
技术与教育的融合:构建现代成绩管理系统
数据库·oracle
秋恬意3 小时前
Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别
java·数据库·mybatis
潇湘秦4 小时前
一文了解Oracle数据库如何连接(1)
数据库·oracle
雅冰石4 小时前
oracle怎样使用logmnr恢复误删除的数据
数据库·oracle
web前端神器4 小时前
mongodb给不同的库设置不同的密码进行连接
数据库·mongodb