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