gpt4 book ai didi

mysql - SQL:匹配字符串模式而不考虑大小写,列中的空格

转载 作者:行者123 更新时间:2023-11-29 01:16:24 25 4
gpt4 key购买 nike

我需要找出列中字符串的频率,而不考虑其大小写和任何空格。

例如,如果我的字符串是 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()

最佳答案

如果您只关心SPACECASE,那么您需要两个函数:

  • 替换
  • 上/下

例如,

SQL> WITH DATA AS(
2 SELECT 'MYTECBITS' STR FROM DUAL UNION ALL
3 SELECT 'mytecbits' STR FROM DUAL UNION ALL
4 SELECT 'MY TEC BITS' STR FROM DUAL UNION ALL
5 SELECT 'my tec bits' STR FROM DUAL UNION ALL
6 SELECT 'MY TEC BITS' STR FROM DUAL UNION ALL
7 SELECT 'MY TEC BITS' STR FROM DUAL
8 )
9 SELECT UPPER(REPLACE(STR, ' ', '')) FROM DATA
10 /

UPPER(REPLA
-----------
MYTECBITS
MYTECBITS
MYTECBITS
MYTECBITS
MYTECBITS
MYTECBITS

6 rows selected.

SQL>

Then, the output should be 6

因此,基于此,您需要在过滤谓词COUNT(*) 返回的行中使用它:

SQL> WITH DATA AS(
2 SELECT 'MYTECBITS' STR FROM DUAL UNION ALL
3 SELECT 'mytecbits' STR FROM DUAL UNION ALL
4 SELECT 'MY TEC BITS' STR FROM DUAL UNION ALL
5 SELECT 'my tec bits' STR FROM DUAL UNION ALL
6 SELECT 'MY TEC BITS' STR FROM DUAL UNION ALL
7 SELECT 'MY TEC BITS' STR FROM DUAL
8 )
9 SELECT COUNT(*) FROM DATA
10 WHERE UPPER(REPLACE(STR, ' ', '')) = 'MYTECBITS'
11 /

COUNT(*)
----------
6

SQL>

注意 WITH 子句仅用于构建示例表 用于演示 目的。在我们的实际查询中,删除整个 WITH 部分,并在 FROM 子句 中使用您的实际表名

所以,你只需要做:

SELECT COUNT(*) FROM YOUR_TABLE 
WHERE UPPER(REPLACE(STR, ' ', '')) = 'MYTECBITS'
/

关于mysql - SQL:匹配字符串模式而不考虑大小写,列中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com