首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中增加默认值

如何在mysql中增加默认值
EN

Stack Overflow用户
提问于 2014-11-04 06:07:06
回答 3查看 396关注 0票数 2

mysql表中有一个字段(demo_field)(varchar)。我想用预定义的前缀来增加这个字段值。例如,我的字段第一个值是demo001。现在,当插入新的值时,我希望增加像demo002, demo003这样的数字。我怎样才能用PHP做到这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-04 06:26:51

试试这个-

代码语言:javascript
复制
//fetch data from table
$sql = $mysqli->query('select count(demo_field) as total,demo_field from tablename limit 1');
$res = $sql->fetch_assoc();

//generate string from existing data
$str = substr($res['demo_field'], 0, 4);
$dig = str_replace($str, '', $res['demo_field']);
$dig = $dig+$res['total'];

//add padding if needed
$dig = str_pad($dig, 3, '0', STR_PAD_LEFT);

//concatenate string & digits
$newStr = $str.$dig;

var_dump($newStr);

另一种不计数的方法

代码语言:javascript
复制
$sql = $mysqli->query('select max(demo_field) as demo_field from demo');
$res = $sql->fetch_assoc();

$str = substr($res['demo_field'], 0, 4);
$dig = str_replace($str, '', $res['demo_field']);
$dig += 1;
$dig = str_pad($dig, 3, '0', STR_PAD_LEFT);
$newStr = $str.$dig;

var_dump($newStr);

希望这可以解决count的问题。

另一种不加填充的字母数字字符串最大计数的解决方案-

代码语言:javascript
复制
$sql = $mysqli->query('select max(cast(substring(demo_field, 5) as unsigned)) as digit,     demo_field from demo');
$res = $sql->fetch_assoc();

$str = substr($res['demo_field'], 0, 4);
$dig = $res['digit'] + 1;
$newStr = $str.$dig;

var_dump($newStr);
票数 3
EN

Stack Overflow用户

发布于 2014-11-04 06:15:48

代码语言:javascript
复制
//use PHP not mysql
$pre = 'demo';
$num = 0;
define('MAX', 100);
for($num = 0; $num < MAX; $num++)
{
    $pre_str = $pre . sprintf("%03d", $num);
    //insert here
}
票数 1
EN

Stack Overflow用户

发布于 2014-11-04 06:42:35

您必须使用INT字段,并在“选择”时间将其转换为任何您想要的格式。

在MySQL中,我们不能将AutoIncrement用于Varchar。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26728760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档