如何实现mysql数据库 表 的url (text字段)的到达一定长度比如(255)之后
自动截断。实际不需要存入那么多的website地址 。 我的想法还是left(255),
开发人员意思不想用这个left。 我现在是没有办法啦,不用left实现自动截断?

解决方案 »

  1.   

    你把这个字段直接定义为 varchar(255) 不就行了。自动截断了。
      

  2.   

    难道还substring啊?效果不都是一样吗
      

  3.   

    varchar(自动截断吗)?
    mysql> desc t2;
    +-------+-------------+------+-----+---------+----------------+
    | Field | Type        | Null | Key | Default | Extra          |
    +-------+-------------+------+-----+---------+----------------+
    | a     | smallint(6) | NO   | PRI | NULL    | auto_increment |
    | c     | varchar(2)  | YES  |     | NULL    |                |
    | d     | varchar(2)  | YES  |     | NULL    |                |
    | e     | int(3)      | YES  |     | NULL    |                |
    +-------+-------------+------+-----+---------+----------------+
    4 rows in set (0.02 sec)
    mysql> insert into t2 values (null,'123','123456',12);
    ERROR 1406 (22001): Data too long for column 'c' at row 1
    mysql> insert into t2 values (null,'12',left('123456',2),12);
    Query OK, 1 row affected (0.05 sec)
    mysql> select * from t2;
    +---+------+------+------+
    | a | c    | d    | e    |
    +---+------+------+------+
    | 1 | Zh   | !!   |  123 |
    | 2 | JK   | ##   |  124 |
    | 3 | HL   | ^^   |  123 |
    | 4 | 12   | 12   |   12 |
    +---+------+------+------+
    4 rows in set (0.00 sec)
      

  4.   

    你把set sql_mode=''后再insert就会自动截断,只是给出警告,不报错。
      

  5.   

    建议字段类型设计为varchar
    截断在程序外面判断处理,不要交个数据库处理,同时,要把数据库的sql_mode设置为严格检查模式,以免引起一些数据异常问题。