Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL通配符用于空格或空_Sql_Wildcard - Fatal编程技术网

SQL通配符用于空格或空

SQL通配符用于空格或空,sql,wildcard,Sql,Wildcard,我在join语句中使用通配符来查找文本字段中何时包含特定短语。最初,我尝试了以下方法: [Text Field] LIKE '%[^0-9A-Z]' + [Phrase] + '[^0-9A-Z]%' 但是,这只会给我一些结果,这些结果包含文本字段中由空格或特殊字符包围的短语。相反,我需要它是当短语被前导或尾随空格包围时,或者如果短语位于文本字段的开头或结尾时。有人知道如何做到这一点吗?我到处搜索都没有结果。可能是您在使用SQL Server。只需在列的开头和结尾添加空格: ' ' + [Te

我在join语句中使用通配符来查找文本字段中何时包含特定短语。最初,我尝试了以下方法:

[Text Field] LIKE '%[^0-9A-Z]' + [Phrase] + '[^0-9A-Z]%'

但是,这只会给我一些结果,这些结果包含文本字段中由空格或特殊字符包围的短语。相反,我需要它是当短语被前导或尾随空格包围时,或者如果短语位于文本字段的开头或结尾时。有人知道如何做到这一点吗?我到处搜索都没有结果。

可能是您在使用SQL Server。只需在列的开头和结尾添加空格:

' ' + [Text Field] + ' ' LIKE '%[^0-9A-Z]' + [Phrase] + '[^0-9A-Z]%'

用您正在使用的数据库标记您的问题。为什么在
like
表达式中有类似正则表达式的字符类
LIKE
不是正则表达式,因此一个简单的“文本字段包含短语”将是类似“%”+[phrase]+'%的
[text field],假设您使用的是SQL方言,其中
+
用于字符串连接。因为如果我仅用“%”包围短语,则它将在任何时候标记短语包含在文本字段中。我只想在短语被空格包围或什么都没有的时候标记它。例如,如果文本字段是“我无法理解”,我不希望“无法理解”来表示感谢您的回答。这会影响索引吗?这也意味着它仍然会选择特殊的角色。@Kenny。完全不是,因为原始查询也不能使用索引(至少在大多数数据库中)。