sql查询匹配字符串的where子句

hrysbysz  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(443)

用例:我想从表t123中选择所有条目,其中表的字段“text”不是“text\u target”的子集字符串。
例如:

text_target = 'abf'

t123的条目如下:,

name         text
1) record1      abc
2) record2      abd
3) record3      af

结果应该是记录1和记录2,因为它们的“text”字段不是text\u目标值“abf”的子集。
编辑:更正了问题

7vhp5slm

7vhp5slm1#

使用正则表达式。例如,如果我们假设您要从“text\u target”(“abf”)检索不包含字符的记录:

SELECT * FROM t123 WHERE NOT text RLIKE "a|b|f"
ecr0jaav

ecr0jaav2#

不是很优雅,但我想:

select * 
    from t123 
    where not ( substring( text from 1 for 1 ) in ( 'a', 'b', 'f', ' ' )
            and substring( text from 2 for 1 ) in ( 'a', 'b', 'f', ' ' )
            and substring( text from 3 for 1 ) in ( 'a', 'b', 'f', ' ' ) )

可以返回包含其他字母的行。

y3bcpkx1

y3bcpkx13#

我想你得把绳子解开:

where ( (test like '%a%') +
        (test like '%b%') +
        (test like '%f%')
      ) <> length(test)

即使是正则表达式也没有明显的帮助。
然而,将字符串视为每个字母有一个元素的集合听起来像是一个数据建模问题。您可能想问另一个问题,描述您的数据,并就如何设计数据库提出建议。
这是一个测试仪(感谢蒂姆)。

jum4pzuy

jum4pzuy4#

使用 like ```
select * from t123 where text like'ab%'

相关问题