同意楼上各位,若真需要这样做的话,为什么不用varchar ?就用逗号分隔就可以了。

解决方案 »

  1.   

    到底我要怎样做才效率高点呢?
    因为目前我们一个数据库就是这样做的
    可是我无法从里面正确读出数据。但那个设计是正确的。
    如sql server 我用 substring(Friends,1,4) 可以读到一个朋友的ID号。
    可是我用 substring(Firends,5,8)就读得错了。
    只要告诉我binary到底怎么存取及读就可以了。
    谢谢
      

  2.   

    最好是用这样的表:myid myfriendid
    1    111
    1    32654
    ...用你的办法,每个人ID号又不一样,平白的增加难度。
      

  3.   

    to:icevi(按钮工厂)
    ID号为int呀,binary(4)可搞定的
    建表不好吧?我想效率可能不高
      

  4.   

    简单,用逗号分隔,再用存储过程把它分拆,(用CHARINDEX定位,的位置)再用ISNUMERIC来进行判断是否为数字一个个进行分拆,这样的数据库设计在ASP里面还是比较多的,一般全部是用半角的逗号分开,在表单提交的时候会自动以逗号分隔相同名字INPUT的值,然后存入此字段即可
      

  5.   

    这样的我也设计过
    可能效率不如binary高
      

  6.   

    我觉得建表好些,算法也简单。用你的办法当然也不是不能做,现在你想存取数都麻烦,再想想数据库的完整性维护等问题处理起来是不是也很复杂?效率高在哪里?存这个ID串时不能用INT,还是需要转成字符串,再转成binary 来存的,实际上每个ID号最后在varbinary 中的长度就不是4了。
    两种方法,一种是用符号分隔,这样:
    insert into t_exp values (cast('1111,2222,345532,4567865,15644' as binary))一种是定长度,这样:
    insert into t_exp values (cast('000001111000002222000345532004567865000015644' as binary))
    若用的第二种方法,才可以用substring(Friends,1,9)读第一个朋友的ID号,用 substring(Firends,10,9)读第二个。哎,怎么看都麻烦,非要这样用?真是想不通啊!