繁体   English   中英

如何在mysql中通过小写字母获取首字母等数据?

How to get data like first capital by lower cases in mysql?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

mysql的新手,

我有一张这样的桌子。

___|____
Id           |    name
1            |       a
2            |       b
3            |       c
4            |       A
5            |       B
6            |       C

在sql中获取这样的结果的查询将是什么

___|____
Id           |    name
4            |       A
1            |       a
5            |       B
2            |       b
6            |       C
3            |       c
3 个回复

已编辑

这似乎是将DDS想法转变为适用于所有MySQL版本的更通用的最简单方法。

询问

SELECT 
   id
 , name
FROM 
 Table1
ORDER BY 
  CASE
    WHEN name COLLATE latin1_bin BETWEEN 'A' AND 'Z'
    THEN ASCII(name) + 31
    ELSE ASCII(name)
   END

结果

| id  | name |
| --- | ---- |
| 4   | A    |
| 1   | a    |
| 5   | B    |
| 2   | b    |
| 6   | C    |
| 3   | c    |

在数据库小提琴上查看

解释视图,以便您可以看到DB Fiddle发生的情况

或更稳定的一种,因为为calculated_ascii_value列生成的唯一值。 解释视图,以便您可以看到DB Fiddle发生的情况

另一个查询非常复杂。

询问

SELECT 
    Table1.id
  , Table1.name 
FROM (

SELECT 
 DISTINCT
   (
     SUBSTRING_INDEX(SUBSTRING_INDEX(@orderList, ',', number_generator.number), ',', -1)
     COLLATE utf8mb4_bin
   ) AS letter
FROM (

SELECT
 (@number := @number + 1) AS number
FROM (
 SELECT 1 AS number UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10
) AS row_1
CROSS JOIN (
 SELECT 1 AS number UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6
) AS row_2
CROSS JOIN (SELECT @number := 0) AS init_user_param 

) AS number_generator
CROSS JOIN (SELECT @orderList := 'A,a,B,b,C,c' /* add all to Z,z */) AS init_user_param

) AS letters
INNER JOIN
 Table1
ON
 letters.letter = Table1.name
;

结果

| id  | name |
| --- | ---- |
| 4   | A    |
| 1   | a    |
| 5   | B    |
| 2   | b    |
| 6   | C    |
| 3   | c    |

在数据库小提琴上查看

请注意,您应该了解一些事情

当您的MySQL使用utf8字符集时, COLLATE utf8mb4_bin可能会改为COLLATE utf8_bin

SELECT @orderList := 'A,a,B,b,C,c' /* add all to Z,z */您可能需要添加更多内容到Z,z

这将使新列“ newid”具有您所需的顺序

select newid = row_number() over (order by case when val between 'A' and 'Z' 
                                          then  ascii(val) -31 
                                          else ascii(val) end), *

from yourtable

尝试这样。 我刚从w3schools使用数据库,需要检查MySql是否工作。

SELECT * FROM myTable GROUP BY name ORDER BY UPPER(name), LOWER(name);
2 查找具有小写字母名称和首字母大写字母的记录[重复]

这个问题已经在这里有了答案: Oracle-选择字段具有小写字符的位置 6个答案 我有一个oracle db,在我的表中,某些记录名称全为小写,而某些字母的首字母大写。 例如:Logan和logan。 我需要能够返回两个结果。 这是我的查询 有没有 ...

3 使用正则表达式将第一个字母转换为小写字母为大写

我正在尝试转换一些文本,其中第一个字母被更改或保留为大写字母,并且 rest 被转换为全小写。 即这是要更改的一些文本 - 这是要更改的一些文本我尝试了以下但 \ 在 Go 中不兼容。 但是我仍然需要它以相同的格式。 替换: - 正则表达式: (\w+)([AZ]) 为: "\L$1$2" ...

2021-02-22 15:05:57 1 41   regex/ go
4 在序列化数据中获取小写字母

我正在尝试通过序列化将一些数据发送到API。 但是在JSONSerialization之后,所有键都变成小写字母。 因此,该API会将结果作为错误请求返回。 为什么会这样呢? 我已经将Json Property应用于每个领域……仍然无法正常工作。 在调用API之前,我已将其序列化 ...

8 Apache Velocity 中的小写首字母

我有这个代码,它在 WebStorm 文件模板中将“点”字符串转换为驼峰式大小写: 例如,它将foo.bar.test转换为FooBarTest 。 但我需要的是将它从foo.bar.test转换为fooBarTest 。 我怎样才能做到这一点? ...

9 如何在SAS中检测和修改小写字母

我有一个名为ID的变量,如下所示。 此变量的最后一个字符或最后两个字符. 可能是小写的。 我想检查是否是这种情况,如果是这种情况,我将创建一个新变量并删除小写字符。 如果没有小写字母,则新变量将与原始变量相同。 有人可以建议我如何实现这一目标吗? ...

2018-09-27 18:41:15 2 80   sas
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM