Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql使用字母数字'更新记录;引脚';,排除歧义字符_Mysql - Fatal编程技术网

mysql使用字母数字'更新记录;引脚';,排除歧义字符

mysql使用字母数字'更新记录;引脚';,排除歧义字符,mysql,Mysql,我以前用过这个 UPDATE whatever_table SET whatever_col = SUBSTRING(MD5(RAND()) FROM 1 FOR 12) 。。。向mysql表中添加随机字符串 现在,类似地,我希望向表中的所有记录(只有几百条记录)添加一个字母数字的“PIN”。“PIN”应该是字母数字的,但不包括“1”、“0”、“O”、“l”等 有人能告诉我如何更新上面的查询以排除这些不明确的字符吗 TIA除了N.B.的评论之外,逻辑在PL/SQL中是有意义的,但在(我的)SQ

我以前用过这个

UPDATE whatever_table SET whatever_col = SUBSTRING(MD5(RAND()) FROM 1 FOR 12)
。。。向mysql表中添加随机字符串

现在,类似地,我希望向表中的所有记录(只有几百条记录)添加一个字母数字的“PIN”。“PIN”应该是字母数字的,但不包括“1”、“0”、“O”、“l”等

有人能告诉我如何更新上面的查询以排除这些不明确的字符吗


TIA

除了N.B.的评论之外,逻辑在PL/SQL中是有意义的,但在(我的)SQL中却没有

REPLACE(str,from_str,to_str)

返回字符串str,其中包含_str中所有出现的字符串 替换为字符串to_str。
REPLACE()
执行区分大小写的 从搜索时匹配

mysql>选择REPLACE('www.mysql.com','w','Ww')

->'ww.mysql.com'

此函数是多字节安全的

对于数字:

select concat(2+floor(rand()*8), 2+floor(rand()*8))
重复2+floor(rand()*8)以获得所需的位数

对于字母数字,请使用“替换”。或者,您可以使用允许的值创建一个表,并将其自身交叉连接以创建唯一的管脚,并使用兰德整数调用这些管脚

编辑:找到了另一个更好的方法-将rand int转换为基数8(0到7之间的数字),然后在每个数字上加2,使所有数字都在2到9之间

选择conv(floor(rand()*10000)、10、8)+22222


为什么不让数据库插入数据,然后担心所用底层语言的逻辑呢?数据库不应该使用太多的逻辑,您将得到不止一个地方来查找bug。是的,在编写新记录时,用php插入“PIN”是没有问题的。然而,在这个例子中,我正在寻找一个快速修复已经存在的记录的方法。那太好了,谢谢。我可以在没有字母字符的情况下生活在已有记录中。找到了更好的方法conv(floor(rand()*10000),10,8)+2222