(注意:这是针对 MySQL 的 SQL,而不是 SQL Server。)
我有一个数据库列,其值类似于“abc def GHI JKL”。我想编写一个 WHERE 子句,其中包括对以特定字母开头的任何单词的不区分大小写的测试。例如,该示例对于字母 a、c、g、j 测试为真,因为每个字母都有一个“单词”开头。该应用程序用于提供查找仅包含以指定字母开头的单词的记录的搜索。另请注意,此表没有全文索引。
最佳答案
您可以使用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 方言中保持不变。
关于SQL (MySQL) : Match first letter of any word in a string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/267808/