【问题标题】:Select the records containing one or more words fully in UPPERCASE选择包含一个或多个完全大写的单词的记录
【发布时间】:2012-10-18 16:03:14
【问题描述】:

我在 MYSql 数据库中有一个查询。我有一个表order_det,表的列remarks_desc包含以下条目:

表结构:

Table: order_det

Columns: rec_id, remarks_desc

order_det 表中的示例记录

rec_id      remarks_desc
_________________________________________________________

1           a specific PROGRAMMING problem
2           A software Algorithm
3           software tools commonly USED by programmers
4           Practical, answerable problems that are unique to the programming profession
5           then you’re in the right place to ask your question
6           to see if your QUESTION has been asked BEFORE

我的要求我只想选择包含更多以大写字母存储的单词的记录。从上面的6条记录中,我只想选择下面的1,3,6条记录:

rec_id      remarks_desc
__________________________________________________
1           a specific PROGRAMMING problem (it contains one all uppercase word PROGRAMMING)
3           software tools commonly USED by programmers (it contains one all uppercase word USED)
6           to see if your QUESTION has been asked BEFORE (it contains two all uppercase words QUESTION and BEFORE)

我尝试使用 LIKE、REGEXP 进行存档,但得到的结果不正确。 请帮助我得到正确的结果。

【问题讨论】:

    标签: mysql sql regex uppercase


    【解决方案1】:

    试试:

    SELECT rec_id, remarks_desc FROM order_det WHERE remarks_desc REGEXP '(^|[[:blank:]])[[:upper:]][[:upper:]]+([[:blank:]]|$)'
    

    我假设您要排除单字母大写单词。如果要排除字符串开头的大写单词,则需要调整正则表达式。

    确保您的表排序规则区分大小写(_cs 不是 _ci)

    我使用了来自http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp的信息

    但是,如果您必须使用正则表达式从数据库中提取数据,那么值得考虑是否可以改进您的数据库设计。 如果您需要良好的数据库性能,这一点尤其重要。

    【讨论】:

    • Tim,是的,表格排序规则区分大小写。但它并不完全返回输出,给出包括 initcaps 词的条目没有完全大写的词。
    • 对不起,我不太明白你的评论。您能否举例说明我的查询匹配但您不想匹配的内容?
    【解决方案2】:

    这是一个非常直接的存储函数,它以大写形式连续返回单词的数量。

    缺点:

    • 它的存储函数不是纯 SQL;
    • 它使用collate
    • 它使用正则表达式,但您可以使用另一个内部循环来填充以摆脱它;
    • 它会计算所有单词,但如果达到 2,您可以添加 break。

    请在following link (gist.github.com) 上找到该功能。此处显示不正确。

    【讨论】:

    • Ravnur,我没有使用这个,因为我需要创建函数,但我会试试这个。
    • 我不确定你是否可以使用纯 sql 做你想做的事
    猜你喜欢
    • 2017-09-24
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多