繁体   English   中英

检查表值是否包含在我发送的字符串中的 SQL 语句

[英]SQL statement that checks if a table value is contained within a string I send it

我知道 LIKE 运算符,但是对于我尝试做的事情,我需要将列与值交换,这不起作用。

我在连接到带有表的数据库的不和谐机器人中使用它。 该表有两列,关键字和响应。 当给定的字符串包含关键字时,我需要一个可以给我响应的查询。

SELECT response FROM Reply WHERE (insert something here to see if provided string 
contains table value)

使用SQL标记表示您的问题与标准 SQL 相关(将鼠标悬停在标记上并阅读它)。

LIKE 不能用于您的目的,因为标准非常清楚您可以指定的内容:

<character like predicate> ::=
<row value predicand> <character like predicate part 2>
<character like predicate part 2> ::=
[ NOT ] LIKE <character pattern> [ ESCAPE <escape character> ]

因此你不能WHERE 'myliteral' LIKE colname

所以你需要一个标量函数,但我不知道标准中定义的任何标量函数可以用于此目的。

因此,您只能使用特定 DBMS 提供的标量函数。 例如,在 DB2 中,您可以将 POSSTR(source_string, search_string) 用作 POSSTR('myliteral', colname)。

Select top 1 response
from Reply t
where concat('%',keyword,'%') like '<user provided text>'
--using % let check if the keyword is 'contained' in user's text

PS CONCAT 使用这种方式适用于 SQLSERVER 检查您正在使用的 dbms 的对应关系,一旦找到第一个关键字,top1 也会停止查询

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM