如何删除整数的最后一位? (PHP)

时间:2011-12-24 10:56:22

标签: php mysql integer

在MySQL查询中删除整数的最后一位数的最佳方法是什么?

我正在开展家谱项目。假设father_id将是

10001
然后孩子们就会

100011
100012
100013

等。

我得到了father_ID,我需要能够得到他所有的孩子

我试过了:

SELECT * FROM table WHERE Father_ID LIKE '$F_ID%'

但它不起作用。

我发现this post将整数转换为数组,我认为这可能有所帮助,但我不知道在那之后我会做什么。

提前致谢!

4 个答案:

答案 0 :(得分:6)

我不确定这是否是构建家谱的好方法。像你一样使用“父亲ID”

  • 只允许跟踪一位父母 - 不适合任何严重的血统研究
  • 使更改变得困难 - 如果进行了更正,则必须重新计算整个ID
  • 有问题@stefgosselin提到 - 那些有10个以上孩子的家庭呢?

我能看到的唯一好处是查询一个祖先的所有后代非常容易,但仅此一点不值得IMO。

我会使用普通的自动增量ID,并为每条记录提供parent列(或fathermother,当然,或者为同性别父母提供帐户,{ {1}}和parent1)。该列将包含父记录的ID。

然后你可以简单地进行像

这样的查询
parent2
查询祖先会变得更加困难,但其他一切变得更加容易。

答案 1 :(得分:2)

根据数据库的实际架构,您基本上有两个选择:

  1. 将整数与字符串匹配。

    SELECT * FROM table WHERE father_id LIKE '${f_id}%';
    
  2. 将整数与数字值匹配。

    SELECT * FROM table WHERE father_id >= $f_id * 10 AND father_id < ($f_id + 1) * 10;
    

答案 2 :(得分:1)

你的SQL错了,正确的语法是

SELECT * FROM table WHERE Father_ID LIKE '$F_ID%' 

答案 3 :(得分:0)

我和我的语言混在一起所以如果这是无效的,请原谅。请尝试以下方法:

floor(number / 10);