1

假设我有一个名为的表table,它的列名为path,其中的字符串格式path如下所示

row path
1   /path1/aa/bg/c/da
2   /path1/ab/v
3   /path1/a/ba/ca

如您所见,每个段都由 char 分隔/。如何格式化whereusing中的条件,like以便返回的唯一行是row 2with 2 slashes

我试过了 DB::table('table')->where('path','LIKE','/path1/%/%')->get()

但是上面的查询将返回由于 last 的所有行%。如何/在最后一个之后排除,以便最后一个之后%具有字符的记录不会包含在结果中?/%

4

1 回答 1

1

如果您正在寻找匹配一个字符:

DB::table('table')->where('path','LIKE','/path1/_/_')->get()

"test%" 匹配后面的所有字符

"%test" 匹配之前的所有字符

"_" 匹配一个字符

ELSE 如果你匹配的字符串长度是可变的,你只能使用正则表达式,

select * from table where path REGEXP '\/path1\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_]+'

更通用的匹配特殊字符:

select * from table where path REGEXP '\/path1\/.+\/.+'
于 2016-05-03T09:09:23.693 回答