当前位置: 首页 > 面试题库 >

选择所有仅包含大写字母的字段

陶博涉
2023-03-14
问题内容

如何在mysql中选择仅包含大写字符的字段或不包含任何小写字符的字段?


问题答案:

您可能需要使用区分大小写的排序规则。我相信默认值不区分大小写。例:

CREATE TABLE my_table (
   id int,
   name varchar(50)
) CHARACTER SET latin1 COLLATE latin1_general_cs;

INSERT INTO my_table VALUES (1, 'SomeThing');
INSERT INTO my_table VALUES (2, 'something');
INSERT INTO my_table VALUES (3, 'SOMETHING');
INSERT INTO my_table VALUES (4, 'SOME4THING');

然后:

SELECT * FROM my_table WHERE name REGEXP '^[A-Z]+$';
+------+-----------+
| id   | name      |
+------+-----------+
|    3 | SOMETHING |
+------+-----------+
1 row in set (0.00 sec)

如果您不想在整个表中使用区分大小写的排序规则,则也可以使用其他答案中建议的@kchauCOLLATE子句。

让我们尝试使用不区分大小写的排序规则的表:

CREATE TABLE my_table (
   id int,
   name varchar(50)
) CHARACTER SET latin1 COLLATE latin1_general_ci;

INSERT INTO my_table VALUES (1, 'SomeThing');
INSERT INTO my_table VALUES (2, 'something');
INSERT INTO my_table VALUES (3, 'SOMETHING');
INSERT INTO my_table VALUES (4, 'SOME4THING');

这不能很好地工作:

SELECT * FROM my_table WHERE name REGEXP '^[A-Z]+$';
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | SomeThing |
|    2 | something |
|    3 | SOMETHING |
+------+-----------+
3 rows in set (0.00 sec)

但是我们可以使用COLLATE子句将名称字段整理为区分大小写的整理:

SELECT * FROM my_table WHERE (name COLLATE latin1_general_cs) REGEXP '^[A-Z]+$';
+------+-----------+
| id   | name      |
+------+-----------+
|    3 | SOMETHING |
+------+-----------+
1 row in set (0.00 sec)


 类似资料:
  • 问题内容: 我正在尝试使用以下命令选择MySQL中仅包含字母数字字符的所有行: 但是,它将返回所有行,而不管它们包含非字母数字字符的事实。 问题答案: 试试这个代码: 这样可以确保所有字符都匹配。

  • 问题内容: 我正在尝试验证我的字符串是否与模式匹配。也就是说,完整的字符串可以写为该模式。但是,如果有任何子字符串匹配该模式,则返回。(如回报,这是我不想在这个例子中,我宁愿验证,整个字符串只含有少量拉丁字母)。 问题答案: 您可以使用 开始 和 结束 标记,并分别指示开始,在您的正则表达式模式的字符串的结尾。这样,您可以使表达式仅匹配整个字符串,而不匹配任何子字符串。在您的情况下,它将如下所示:

  • 问题内容: 我知道.capitalize()将字符串的第一个字母大写,但是如果第一个字符是整数怎么办? 这个 对此 问题答案: 如果第一个字符是整数,则不会大写第一个字母。 如果需要此功能,请去除数字,然后使用来检查每个字符。

  • rank ▲ ✰ vote url 63 367 163 862 url 生成包含大写字母和数字的随机字符串 我希望生成N大小的字符串. 里面只含有数字和大写字母,比如: 6U1S75 4Z4UKK U911K4 有没有什么Pythonic的方法? 一行写的答案: ''.join(random.choice(string.ascii_uppercase + string.digits) for _

  • null 我对解析和的最佳猜测如下。此regex似乎将所有输入计算为:

  • 问题内容: 我只想在我的姓名字段中输入字母作为输入。 我已经尝试过使用matchs方法,但是不幸的是出了点问题,并且抛出了异常。 还有其他检查方法吗? 问题答案: 您可以尝试使用此正则表达式