【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
相关推荐
一只专注api接口开发的技术猿13 分钟前
OpenClaw 对接淘宝商品 API,低成本实现全天候选品监控|附可运行 Python 实操代码
大数据·开发语言·数据库·python
爱喝水的鱼丶1 小时前
SAP-ABAP:SAP基础数据校验工具开发系列博客(共5篇)第三篇:SAP接口对接开发:实现数据的实时/批量校验交互
运维·数据库·学习·性能优化·sap·abap·经验交流
真香号1 小时前
记一次生产RocketMQ消息积压消费慢的排查与解决
数据库·rocketmq·java-rocketmq
数据库小学妹1 小时前
国产数据库技术成熟度实测:从Oracle兼容到高可用,四个维度评估能不能上生产
数据库·经验分享·oracle·性能优化·dba
JdSnE27zv2 小时前
数据库性能优化三:程序操作优化
数据库·sql·性能优化
淘矿人2 小时前
DeepSeek V4对决Claude 4.8:AI模型终极横评
java·开发语言·人工智能·python·sql·php·pygame
小陈phd2 小时前
多模态大模型学习笔记(四十八)——从自然语言到 SQL:大模型时代结构化数据查询的技术革命与落地实践
笔记·sql·学习
AC赳赳老秦3 小时前
OpenClaw任务复盘自动化:统计每日完成工作、遗留问题,优化工作节奏
java·大数据·linux·运维·服务器·数据库·openclaw
流星白龙3 小时前
【MySQL高阶】20.InnoDB 磁盘文件
android·mysql·adb
AOwhisky3 小时前
学习自测(MySQL系列第一期、第二期)
linux·运维·数据库·学习·mysql·云计算