[英]Mysql SELECT all rows where char exists in value but not the last one
我需要MYSQL中的SELECT查询,该查询将检索一个表中的所有行,而字段值包含“?” 具有一个条件的char:char不是最后一个字符
例:
ID Field
1 123??see
2 12?
3 45??78??
然后返回的行将是ID 1和3中与给定条件匹配的行
我唯一的陈述是:
SELECT *
FROM table
WHERE Field LIKE '%?%'
但是,MySQL查询不能解决我的问题。
LIKE表达式还支持与一个字符完全匹配的通配符“ _
”。
因此,您可以像下面的示例一样编写表达式,并知道您的“?” 不会是字符串中的最后一个字符。 必须至少再有一个字符。
WHERE intrebare LIKE '%?_%'
来自@JohnRuddell的评论,
是的,是的,这将匹配字符串“ ??” 因为一个“?” 存在于不是最后一个字符的位置。
这取决于OP是否意味着要匹配。 OP说字符串“ 45 ?? 78 ??” 是一场比赛,但尚不清楚他们是否打算使用“ 4578?” 成为比赛。
一种替代方法是使用正则表达式,但这要复杂一些,因为您必须转义文字“?”,因此不会将其解释为正则表达式元字符。 然后也逃脱转义字符。
WHERE intrebare REGEXP '\\?[^?]'
您可以在最后一个字符不是?的地方添加一个附加字符。
SELECT *
FROM intrebari
WHERE intrebare LIKE '%?%' AND intrebare NOT LIKE '%?'
你也可以这样
SELECT *
FROM intrebari
WHERE intrebare LIKE '%?%' AND RIGHT(intrebare,1) <> '?'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.