我想知道,在mysql/sql中是否有某种方法可以洗牌字符串的字母,比如伪代码:SELECT SHUFFLE('abcdef')
?
从http://dev.mysql.com/doc/refman/5.0/en/string-functions.html中找不到任何内容,搜索它似乎只找到了无序搜索结果的解决方案,而不是字符串。
最佳答案
干得好:
分隔符//
如果存在洗牌,则删除函数;
创建函数洗牌(
字符文本
)
返回文本
不确定——多个rand()的
无SQL
SQL安全调用程序
注释''
开始
声明v_retval文本默认值“”;
声明u_pos int unsigned;
声明u int unsigned;
设置u=长度(v_chars);
当u>0时
做
设置u_pos=1+楼层(rand()*u);
设置v_retval=concat(v_retval,mid(v_chars,u_pos,1));
设置v_chars=concat(左(v_chars,u_pos-1),中间(v_chars,u_pos+1,u));
设置u=u-1;
结束时;
返回v_retval;
结束;
/
分隔符;
选择shuffle('abcdef');
输出见sqlfiddle.com。