3

我想构建一个 sql 查询,其中我的一个表单字段不应包含通用名称(在单独的表中维护的单词列表),并且我将该字段的值作为参数传递并希望检查它是否不应该包含该表中的任何通用名称。

我如何使用 sql 查询来实现这一点?

注意:如果通用名称是“abc”并且我将参数传递为“!abc123”,因为它包含该单词查询应该返回false。

提前致谢。

4

5 回答 5

3

尝试类似(未经测试的查询):

SELECT CommonName 
FROM CommonNamesTable 
WHERE CommonName like '%NameToTest%' 
OR CONTAINS(NameToTest, CommonName);

基本上你需要字符串匹配选项:

查看CONTAINS的选项并阅读全文搜索查询

于 2012-09-18T08:03:57.043 回答
2

这是你要找的吗?

SELECT (COUNT(*) == 0) FROM tablewithcommonwords 
WHERE wordfromform LIKE CONCAT('%', wordcolumnnfromcommonwordstable, '%');
于 2012-09-18T08:04:17.870 回答
0

尝试这个:

   IF NOT EXISTS(SELECT word FROM CommonWord WHERE @yourparam 
                 LIKE '%' + word + '%')
    BEGIN
       RETURN 1
    END
    ELSE
    BEGIN
      Return 0
    END

如果@yourParam包含在您不想使用的任何单词或名称中,则此方法有效。如果它不包含在表中的任何行中,它只返回 1。

我只以这种方式写这句话(您可以使用简单的 Exists 而不是 NOT Exists),因为您可能想在真实部分中扩展功能。

于 2012-09-18T08:06:05.493 回答
0
if exists (select * from reservedwords where @parameter like '%'+word + '%')
    select 0 
else
    select 1
于 2012-09-18T08:06:10.083 回答
0

我想建议您必须在 TextBox 中使用 keypress 事件,然后在 TextBox 中输入每个字符后处理您的代码。

于 2012-09-18T08:18:24.370 回答