【问题标题】:MySQL like with IN clause [duplicate]MySQL 与 IN 子句类似 [重复]
【发布时间】:2019-06-24 14:49:44
【问题描述】:

是否可以使用 IN 子句扩展 LIKE 表达式?

此刻我得到以下SQL:

select * 
from SECURITY_PERMISSION permission
where permission.PERMISSION_ID like '%_10498_%'
and permission.PERMISSION_ID like '%_OBJ_VIEW%'

我想将数字列表传递给我的like 表达式。类似的东西:

select * 
from SECURITY_PERMISSION permission
where permission.PERMISSION_ID like '%_IN(list_of_numbers)_%'
and permission.PERMISSION_ID like '%_OBJ_VIEW%'

【问题讨论】:

  • 不喜欢,但是你可以通过正则表达式来做到这一点(| 运算符)

标签: mysql sql-like sql-in


【解决方案1】:

那是糟糕的数据库设计。但你可以改用REGEXP

WHERE permission.PERMISSION_ID REGEXP '_(123|456|789)_'

这仍然是糟糕的数据库设计。

【讨论】:

【解决方案2】:

您也可以像这样使用 REGEXP,因为一个字段包含多个用逗号分隔的值,例如:

WHERE column REGEXP '[[:<:]]1|2|3|4[[:>:]]'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2014-12-27
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    相关资源
    最近更新 更多