Sql 正则表达式黑名单

Sql 正则表达式黑名单,sql,tsql,Sql,Tsql,有人能给我解释一下以下问题的含义吗 SELECT message.message FROM message CROSS JOIN Blacklist WHERE(message.message LIKE {fn CONCAT({fn CONCAT('%', Blacklist.Words)}, '%')}); 我知道交叉连接是什么意思,但我想知道函数在这个查询中到底做了什么。来自文档: CONCAT函数返回由连接产生的字符串, 或连接两个或多个字符串值 您的代码使用只获取2个参数的

有人能给我解释一下以下问题的含义吗

SELECT message.message
FROM message CROSS JOIN
     Blacklist
 WHERE(message.message LIKE {fn CONCAT({fn CONCAT('%', Blacklist.Words)}, '%')});
我知道交叉连接是什么意思,但我想知道函数在这个查询中到底做了什么。

来自文档:

CONCAT函数返回由连接产生的字符串, 或连接两个或多个字符串值

您的代码使用只获取2个参数的函数。这就是fn前缀的原因

所以这一行:

{fn CONCAT({fn CONCAT('%', Blacklist.Words)}, '%')})
相当于:

CONCAT('%', Blacklist.Words, '%')
样本输出:

如果
Words
字段为
apple
,则LIKE语句的输出为:

SELECT message.message
FROM message CROSS JOIN
     Blacklist
 WHERE(message.message LIKE '%apple%');
从文件:

CONCAT函数返回由连接产生的字符串, 或连接两个或多个字符串值

您的代码使用只获取2个参数的函数。这就是fn前缀的原因

所以这一行:

{fn CONCAT({fn CONCAT('%', Blacklist.Words)}, '%')})
相当于:

CONCAT('%', Blacklist.Words, '%')
样本输出:

如果
Words
字段为
apple
,则LIKE语句的输出为:

SELECT message.message
FROM message CROSS JOIN
     Blacklist
 WHERE(message.message LIKE '%apple%');

看起来像是用于生成SQL的模板代码。看起来像是用于生成SQL的模板代码。从不知道这些与ODBC兼容的函数+1从我这里。从来都不知道这些ODBC兼容函数+从我这里得到1。