SQL选择不带';不包含Y,但包含X

SQL选择不带';不包含Y,但包含X,sql,regex,select,sql-like,Sql,Regex,Select,Sql Like,我正在尝试选择此数据库字段包含字符串但不包含特定值的所有实例 示例:我试图选择“红色椅子”的每个实例,其中“红色椅子”不是以“大”开头的。如果在下表中运行该查询,我只会返回ID为2的行: +----------+--------------+---------+ | ID | content | +----------+------------------------+ | 1 | The big red chair | | 2

我正在尝试选择此数据库字段包含字符串但不包含特定值的所有实例

示例:我试图选择“红色椅子”的每个实例,其中“红色椅子”不是以“大”开头的。如果在下表中运行该查询,我只会返回ID为2的行:

+----------+--------------+---------+ | ID | content | +----------+------------------------+ | 1 | The big red chair | | 2 | I have a red chair | | 3 | I have a big chair | +----------+------------------------+ +----------+--------------+---------+ |ID |内容| +----------+------------------------+ |1 |红色的大椅子| |我有一把红色的椅子| |我有一把大椅子| +----------+------------------------+ 提前谢谢

您可以使用:

像“%red chair%”而不像“%big%”

编辑:像匹配字符串一样修复

WHERE content like '%red chair%'
AND content not like '%big red chair%'

但不会很快

这会得到你想要的,假设短语“红色椅子”在
内容中只出现一次。如果它可以出现不止一次(“红色的椅子是一个大红色的椅子”),你想要什么结果

SELECT * FROM Furniture 
  WHERE content LIKE '%red chair%' AND content NOT LIKE '%big red chair%'
选择以X开头且不包含X的字符串


第3行也不会返回,因为它不包含文本“RED CHAIR”。某些引擎默认不区分大小写,其他引擎有选项(或运算符)在不区分大小写的manor中执行此比较。无论如何,我怀疑Katzumi正在努力解决的是案件敏感性问题。-1标题和问题相互矛盾。此外,示例和文本是矛盾的(大写?)。请修复。更新了问题标题以匹配回答,并删除了大写字母。:)或者更精确一点:像“%red chair”而不是“big red%”不幸的是,这仍然会选择第1行。它在选择第2行时也可能有问题,这取决于OP风格的SQL如何处理行尾空白字符。这是正确的-您需要在两个字符串的两侧添加“%”字符。这回答了问题的标题(错误),但实际问题与标题并不匹配。Larry,这是我在寻找解决方案时遇到的主要问题。您将如何命名此帮助请求?如果他们允许,我将尝试编辑。我最终希望在实例前面插入“小”一词,其中红色椅子前面没有“大”一词。因此,如果内容中有多个实例,我也希望替换这些实例。
WITH T 
     AS 
     (
      SELECT * 
        FROM (
              VALUES ('xenophilia'), 
                     ('xbox'), 
                     ('regex')
             ) AS T (c)
     )
SELECT * 
  FROM T
 WHERE c LIKE 'x%'
       AND c NOT LIKE '_%x%';