【发布时间】:2015-04-29 09:56:31
【问题描述】:
我需要在列中找到字符串的频率,而不管它的大小写和任何空格。
例如,如果我的字符串是My Tec Bits,并且它们像这样出现在我的表中,如下所示:
061 MYTECBITS 12123
102 mytecbits 24324
103 MY TEC BITS 23432
247 my tec bits 23243
355 My Tec Bits 23424
454 My Tec BitS 23432
然后,输出应该是6,因为去掉了白人的步伐并且不考虑大小写,所有这些字符串都是相同的。
SQL 中是否有与 R 中相同的 grep()?
【问题讨论】:
-
您使用的是 MySQL 还是 Oracle?除非您同时使用两个数据库,否则不应添加两个标签。
-
请注意,在 MySQL 中 REGEXP 默认不区分大小写。
-
@CasimiretHippolyte - 区分大小写取决于被测试列的
COLLATION。 -
@RickJames:我只能是二进制排序规则的问题,但在这种情况下,您可以使用
COLLATE关键字人为地更改它以进行字符串搜索。但正如我所说,默认情况下SELECT "a" REGEXP "A";返回 1 -
很好的例子。但是...
SET @@collation_connection = utf8_bin; SELECT "a" REGEXP "A";返回 0。因此,我声称是排序规则、正则表达式决定了是否折叠。