【发布时间】:2016-07-03 14:38:50
【问题描述】:
我有一个名为 Department 的模型。
class Department < ActiveRecord::Base
# Associations
belongs_to :client
belongs_to :facility
scope :facility_departments, ->(facility_id) {
where("facility_id = ? ", facility_id)}
scope :matching_departments, ->(facility_id, identifier) {facility_departments(facility_id).where("
? REGEXP reg_exp ", identifier.to_s).order("weight DESC") }
end
- 在部门表中,我有一个
facility_id和一个正则表达式列。 - 我的应用程序中还有员工,每个人都有一个部门 ID。为了识别员工部门,我在部门模型中使用范围
matching_departments(见上文)。 - 每个员工也都有一个标识符。
- 所有具有数字标识符和标识符长度 = 9 的员工,除了 9 个零 (000000000) - 应映射到部门 1。
那么在我的departments 表中department-1 的正则表达式应该是什么?
我用(^[0-9]{9,}$) 更新了它——将所有数字标识符与length 9 匹配。如何排除9 zeros?
【问题讨论】:
-
那么,您需要 MySQL REGEXP 模式吗?它似乎不支持任何环视。你可以使用
WHERE col REGEXP '^[0-9]{9}$ AND col <> '000000000' -
您是说要在数据库中保存
^[0-9]{9}$ AND col <> 000000000吗?或像这样更改查询。我没有得到你。在我的情况下 col 是一个动态值。这是我范围的一个论据。每次调用范围都会有所不同。所以我不认为这对我有用。
标签: mysql ruby-on-rails ruby regex