当前位置: 首页 > news >正文

网站的架设手机模拟器

网站的架设,手机模拟器,近三天发生的大事,创新的广州做网站3374. 首字母大写 II 表:user_content -------------------- | Column Name | Type | -------------------- | content_id | int | | content_text| varchar | -------------------- content_id 是这张表的唯一主键。 每一行包含一个不同的 ID 以及对应的文…

3374. 首字母大写 II

表:user_content

±------------±--------+
| Column Name | Type |
±------------±--------+
| content_id | int |
| content_text| varchar |
±------------±--------+
content_id 是这张表的唯一主键。
每一行包含一个不同的 ID 以及对应的文本内容。
编写一个解决方案来根据下面的规则来转换 content_text 列中的文本:

将每个单词的 第一个字母 转换为 大写,其余字母 保持小写。
特殊处理包含特殊字符的单词:
对于用短横 - 连接的词语,两个部份 都应该 大写(例如,top-rated → Top-Rated)
所有其他 格式 和 空格 应保持 不变
返回结果表同时包含原始的 content_text 以及根据上述规则修改后的文本。

结果格式如下例所示。

示例:

输入:

user_content 表:

±-----------±--------------------------------+
| content_id | content_text |
±-----------±--------------------------------+
| 1 | hello world of SQL |
| 2 | the QUICK-brown fox |
| 3 | modern-day DATA science |
| 4 | web-based FRONT-end development |
±-----------±--------------------------------+
输出:

±-----------±--------------------------------±--------------------------------+
| content_id | original_text | converted_text |
±-----------±--------------------------------±--------------------------------+
| 1 | hello world of SQL | Hello World Of Sql |
| 2 | the QUICK-brown fox | The Quick-Brown Fox |
| 3 | modern-day DATA science | Modern-Day Data Science |
| 4 | web-based FRONT-end development | Web-Based Front-End Development |
±-----------±--------------------------------±--------------------------------+
解释:

对于 content_id = 1:
每个单词的首字母都是大写的:“Hello World Of Sql”
对于 content_id = 2:
包含的连字符词 “QUICK-brown” 变为 “Quick-Brown”
其它单词遵循普通的首字母大写规则
对于 content_id = 3:
连字符词 “modern-day” 变为 “Modern-Day”
“DATA” 转换为 “Data”
对于 content_id = 4:
包含两个连字符词:“web-based” → “Web-Based”
以及 “FRONT-end” → “Front-End”

题解

  1. 要考虑怎么把首字母切分出来,然后连接
    substring,concat,lower、upper,然后就慢慢转化呗
  2. 技术上不好处理,可以把问题前置,比如用代码处理,不用sql

方法一

-- 文本处理函数集合:将文本转换为首字母大写格式(支持含短横线的单词)
SELECT
content_id,
content_text AS original_text,
(-- 主查询:处理每个单词并重新连接成文本SELECT GROUP_CONCAT(CASE-- 处理含短横线的复合词(如 "quick-brown" → "Quick-Brown")WHEN INSTR(word, '-') > 0 THENCONCAT(UPPER(LEFT(SUBSTRING_INDEX(word, '-', 1), 1)), -- 第一部分首字母大写LOWER(SUBSTRING(SUBSTRING_INDEX(word, '-', 1), 2)), -- 其余小写'-', -- 保留短横线UPPER(LEFT(SUBSTRING_INDEX(word, '-', -1), 1)), -- 第二部分首字母大写LOWER(SUBSTRING(SUBSTRING_INDEX(word, '-', -1), 2)) -- 其余小写)-- 处理普通单词(如 "the" → "The")ELSECONCAT(UPPER(LEFT(word, 1)), LOWER(SUBSTRING(word, 2)))ENDSEPARATOR ' ') -- 用空格连接处理后的单词FROM (-- 子查询:将文本按空格拆分为单词(最多支持6个单词,可扩展)SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(LOWER(content_text), ' ', n), ' ', -1)) AS wordFROM (SELECT content_text FROM user_content WHERE content_id = t.content_id) AS cJOIN (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALLSELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 -- 扩展此范围以支持更多单词) AS numsON CHAR_LENGTH(LOWER(content_text)) - CHAR_LENGTH(REPLACE(LOWER(content_text), ' ', '')) >= nums.n - 1) AS words
) AS converted_text
FROM user_content t;

方法二

WITH RECURSIVE cte_split AS (-- 初始分割文本,将每个单词逐一提取SELECTcontent_id,@x := content_text AS original_text,@dash := LOCATE('-', @x) AS first_dash,@space := LOCATE(' ', @x) AS fist_space,@sec := CASEWHEN @dash <> '0' AND @space <> '0' THENLEAST(CAST(@space AS UNSIGNED), CAST(@dash AS UNSIGNED))WHEN @dash = '0' AND @space = '0' THENLENGTH(@x)ELSEGREATEST(CAST(@space AS UNSIGNED), CAST(@dash AS UNSIGNED))END AS separate_loc,LEFT(@x, CAST(@sec AS UNSIGNED)) AS word,SUBSTRING(@x, CAST(@sec AS UNSIGNED) + 1) AS remaining_text,0 AS word_order -- 跟踪单词的顺序FROM user_contentUNION ALL-- 递归分割剩余文本中的单词SELECTcontent_id,original_text,@dash := LOCATE('-', remaining_text) AS first_dash,@space := LOCATE(' ', remaining_text) AS fist_space,@sec := CASEWHEN @dash <> '0' AND @space <> '0' THENLEAST(CAST(@space AS UNSIGNED), CAST(@dash AS UNSIGNED))WHEN @dash = '0' AND @space = '0' THENLENGTH(remaining_text)ELSEGREATEST(CAST(@space AS UNSIGNED), CAST(@dash AS UNSIGNED))END AS separate_loc,LEFT(remaining_text, CAST(@sec AS UNSIGNED)) AS word,SUBSTRING(remaining_text, CAST(@sec AS UNSIGNED) + 1) AS remaining_text,word_order + 1 -- 跟踪单词的顺序FROM cte_splitWHERE remaining_text <> ''
),
cte_transformed AS (SELECTcontent_id,original_text,word_order,CONCAT(UPPER(SUBSTRING(word, 1, 1)),LOWER(SUBSTRING(word, 2)))AS transformed_wordFROM cte_split
),
cte_reconstructed AS (-- 重建文本,将转换后的单词重新组合SELECTcontent_id,original_text,GROUP_CONCAT(transformed_word ORDER BY word_order SEPARATOR '') AS converted_textFROM cte_transformedGROUP BY content_id
)
SELECTcontent_id,original_text,converted_text
FROM cte_reconstructed;
http://www.dtcms.com/a/542798.html

相关文章:

  • wordpress内容模板下载seo怎么做整站排名
  • 请问聊城做网站乔拓云智能建站官网登录入口
  • 怎么样自己做百度网站网站设计平台 动易
  • 响应式网站 图片尺寸奇数北京海淀区
  • led 网站模板易无忧建站
  • [SPSS] SPSS软件基础知识
  • 深圳市城乡住房和建设局网站seo 网站关键词
  • 住房建设部官方网站专家注册公司的网站做备案我是网站负责人如果离职以后要不要负法律责任
  • 企业网站源码怎么获取wordpress 转 html
  • 网站开发的软件环境有哪些wordpress文章页面模板下载
  • 团购网站案例青岛网站设计建设
  • 海口网站建设维护电厂cms系统是什么
  • 手机做网站过程动画制作专业学校排名
  • linux 特殊符号
  • 郑州建设网店网站辽宁建设工程信息网官网首页
  • 毕业设计旅游网站开发设计师应该知道的网站
  • 信息管理系统网站开发教程高仿做的最好的网站
  • RC延时电路
  • 快站公众号免费做相册video的网站
  • 如何把自己做的网站 放在网上站长工具网址查询
  • 海口网站开发制作wordpress 添加侧边栏
  • 商业网站建设费用wordpress要钱吗
  • 代理服务器怎么设置2022百度seo最新规则
  • 做购物网站需要什么无锡市住房与城乡建设局网站
  • 网站建设788gg清远做网站哪家好
  • 苏州网站建设联系苏州梦易行凌风wordpress教程
  • 做衣服哪个网站好wordpress做相册
  • 仙桃网站设计济南设计网站的公司
  • 机械公司网站源码聊城做网站推广
  • 海南美容网站建设wordpress手机移动版