繁体   English   中英

MySQL选择值中存在char但不存在最后一行的所有行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM