当前位置:  开发笔记 > 后端 > 正文

SQL(MySQL):匹配字符串中任何单词的首字母?

如何解决《SQL(MySQL):匹配字符串中任何单词的首字母?》经验,为你挑选了2个好方法。

(注意:这是针对MySQL的SQL,而不是SQL Server.)

我有一个数据库列,其值为"abc def GHI JKL".我想编写一个WHERE子句,其中包含对以特定字母开头的任何单词的不区分大小写的测试.例如,该示例将对字母a,c,g,j测试为true,因为从每个字母开始都有一个"单词".该应用程序用于搜索,该搜索提供查找仅包含以指定字母开头的单词的记录.另请注意,此表没有全文索引.



1> Tomalak..:

您可以使用LIKE操作.如果您的单词以空格分隔,请在字符串的开头添加一个空格,以便为第一个单词提供匹配的机会:

SELECT
  StringCol
FROM
  MyTable
WHERE
  ' ' + StringCol LIKE '% ' + MyLetterParam + '%'

哪里MyLetterParam可能是这样的:

'[acgj]'

要查找多个空格作为单词分隔符,您可以扩展该技术.以下将TAB,CR,LF,空格和NBSP视为单词分隔符.

WHERE
  ' ' + StringCol LIKE '%['+' '+CHAR(9)+CHAR(10)+CHAR(13)+CHAR(160)+'][acgj]%'

这种方法非常适合作为标准SQL.它将在主要的SQL方言中保持不变.



2> Incidently..:

使用REGEXP opearator:

SELECT * FROM `articles` WHERE `body` REGEXP '[[:<:]][acgj]'

它返回记录,其中列体包含以a,c,g或i开头的单词(不区分大小写)

但请注意:如果您期望任何重负载(不使用索引 - 它会扫描每一行,这不是一个好主意!)

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有