我在mysql表中有一个字段(demo_field)(varchar)。我想用预定义的前缀增加这个字段值。 例如,我的字段第一个值是demo001
。现在,当插入新值时,我想增加数字数字,如demo002, demo003
。 如何使用PHP来做到这一点。如何在mysql中增加默认值
回答
试试这个 -
//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);
的另一种方式,而不计
$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
解决问题。
与最大计数另一种解决方案为字母数字字符串,并没有填充 -
$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);
是的。目前我使用这种方法。我只是想知道插入时是否可以直接(一些如何)增加值。谢谢@sgt – 2014-11-04 06:32:40
你将如何增加一个字符串,而无需在PHP中进行字符串操作? – 2014-11-04 06:35:26
此外还有一个小缺点。考虑到生成号码并不是一个好主意。因为如果我们删除几个值,然后根据计数生成数字可能会创建重复值 – 2014-11-04 06:37:07
//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
}
嗨,这种方法不能使用。我们必须检查表中已经存在的值,然后增加 – 2014-11-04 06:30:04
...我不知道你想要做什么然后-..- – lkxiaolou 2014-11-04 06:38:47
,你必须使用一个INT领域 和它翻译成你想在“选择”时间的任何格式。
在MySQL中,我们不能使用AutoIncrement for Varchar。
这是错误的。可以办到。 – 2014-11-04 06:53:11
你能举一些例子吗? – 2014-11-06 07:09:04
http://stackoverflow.com/a/17894239/和同一页内http://stackoverflow.com/a/26728953/ – 2014-11-06 07:10:31
- 1. 默认值在mysql表中
- 2. mysql默认值?
- 3. mysql默认值
- 4. 默认值不会在MySQL
- 5. 如何设置默认值,同时增加了新列
- 6. 如何自动增加texbox的默认值
- 7. 增加默认大小
- 8. mySQL $ REQUEST默认值
- 9. MySQL BLOB默认值
- 10. 如何设置默认值的MySQL
- 11. 如何获取通常在Django中增加的字段的默认值?
- 12. postgresql表中的默认递增值
- 13. 默认值在MySQL表中ID
- 14. 在默认MySQL值中执行计算
- 15. 在MySQL中插入默认值+30天
- 16. 在mysql Id列中设置默认值?
- 17. 如何在mysql中使用函数uuid()设置默认值?
- 18. 如何在mysql中为外键列设置默认值
- 19. 如何在MySql中将默认值设置为sysdate?
- 20. 如何增加odoo中的默认内存使用量?
- 21. 如何从Jquery-UI图标集中增加默认大小16px?
- 22. 强制默认值增加表列中时 - SQL服务器
- 23. 如何将默认值添加到RadComboBox?
- 24. 如何向EditText添加默认值:android
- 25. MySQL智能默认值
- 26. MySQL的默认值 - YEAR(CURRENT_DATE)
- 27. MySQL 5.5和5.6默认值
- 28. MySQL函数列默认值
- 29. MySQL选择默认值
- 30. MySQL默认值问题
在mysql中添加'AUTO_INCREMENT'并省略PHP中的'insert'字段 – 2014-11-04 06:09:43
如何做到这一点?为此,我们需要设置一个默认值?我也需要字母字符。如果我们给auto_increment,我们不能添加字母字符 – 2014-11-04 06:13:47