我在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将其归档,但结果不正确。 请帮助我得到正确的结果。
答案 0 :(得分:0)
尝试:
SELECT rec_id, remarks_desc FROM order_det WHERE remarks_desc REGEXP '(^|[[:blank:]])[[:upper:]][[:upper:]]+([[:blank:]]|$)'
我假设您要排除单字母大写单词。如果你想在字符串的开头排除大写单词,你需要调整正则表达式。
确保您的表格排序区分大小写(_cs not _ci)
我使用了来自http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp
的信息但是,如果您必须使用正则表达式从数据库中提取数据,则值得考虑是否可以改进数据库设计。 如果您需要从数据库中获得良好的性能,这一点尤其重要。
答案 1 :(得分:0)
这是非常直接的存储函数,它返回行中大写的单词数量。
缺点:
collate
请在following link(gist.github.com)上找到该功能。它在这里无法正确显示。