【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
相关推荐
Databend1 小时前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶1 小时前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung2 小时前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql
parade岁月3 小时前
MySQL JOIN解析:朴实无华但食之有味
数据库·后端
用户3169353811833 小时前
MySQL服务无法启动问题解决全记录
数据库
vivo互联网技术6 小时前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
数据技术说7 小时前
MySQL 迁移实战——如何实现真正的"零改造"平滑切换
mysql
倔强的石头_1 天前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB1 天前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
jiayou642 天前
KingbaseES 表级与列级加密完全指南
数据库·后端