3

我在 mysql 类型 varchar 中有字段,字段数据包含代码,代码就像树结构,点 (.) 作为父子之间的分隔符。

示例1215有孩子1215.0011215.002

这是数据库中每一行的数据

ID  | kode
1   | 1215
2   | 1215.001
3   | 1215.001.001
4   | 1215.002.001
5   | 1215.002
6   | 1215.002.001

如何获得2级代码?
它的意思只是代码1215.0011215.002

已尝试使用此查询

select * from `kegiatan` where `kode` LIKE '1215.%';

但它让所有代码都以1215例如:1215.001.001

4

3 回答 3

4

使用正则表达式。

 select * from `kegiatan` where `kode` REGEXP '^1215\.[^\.]+$';

这将匹配所有内容:

 That starts with ( "^" )

 the string "1215.",

 followed by at least one character that is a member of the set "NOT ." ("[^\.]+")

  followed by the end of the string.("$")
于 2012-05-11T09:00:57.207 回答
2

您可以为此使用正则表达式;

select * from `kegiatan` where `kode` REGEXP '^1215.[0-9]+$';

它将匹配以 开头的项目^1215,然后是句点.,然后是一个或多个数值[0-9]+,然后是字符串的结尾$

这将匹配1215.001and 1215.002,但不匹配1215or1215.001.001

希望它有帮助,戴夫

于 2012-05-11T09:02:48.953 回答
0
select distinct substr(kode,1,8)  from `kegiatan` where `kode` LIKE '1215.%';

http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substr

于 2012-05-11T08:58:02.880 回答