跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 【不懂就要问】MySQL 替换随机数
未分類
4 2 月 2020

【不懂就要问】MySQL 替换随机数

imsun 大佬有话说 : 2019-12-28 18:00:31

【不懂就要问】MySQL 替换随机数

UPDATE DedeCMS SET text=REPLACE(text,’文字’,ROUND((rand() * 500)))

结果发现了一个问题
就是所有的 文字 都被替换成同一个随机值,

我想要达到的是,文字被替换为1, 被替换为2,被替换为3….这样每个都随机。

请求大佬指明方向。

imsun 大佬有话说 : 2019-12-28 18:06:56

求助求助人工顶

woniu 大佬有话说 : 2019-12-28 18:09:27

呵呵 一个语句当然是统一替换

自己写存储过程吧,循环里面一条条更新即可

hnxzc 大佬有话说 : 2019-12-28 18:37:30

你这rand只有一次啊

imsun 大佬有话说 : 2019-12-28 20:03:27

woniu 大佬有话说 : 2019-12-28 18:09
呵呵 一个语句当然是统一替换

自己写存储过程吧,循环里面一条条更新即可 …

求助该怎么写…

woniu 大佬有话说 : 2019-12-28 20:14:57

imsun 大佬有话说 : 2019-12-28 20:03
求助该怎么写…

写个游标

然后在游标里面执行你的更新语句就可以了

自己去看 https://**blogs.com/horror/p/9520906.html

或者把你的表结构发上来

imsun 大佬有话说 : 2019-12-28 20:24:26

woniu 大佬有话说 : 2019-12-28 20:14
写个游标

然后在游标里面执行你的更新语句就可以了

ELIMITER //
DROP PROCEDURE IF EXISTS test;
CREATE PROCEDURE test()
BEGIN
DECLARE i INT;
SET i = 0;
REPEAT
    UPDATE DedeCMS SET text=REPLACE(text,’文字’,ROUND((rand() * 500)))
    SET i = i + 1;
UNTIL i > 51900 END REPEAT;
SELECT * FROM test;
END
//
CALL test();
DELIMITER ;

执行不起来。

我的表结构是
表名:ak_texts
结构:id   itemid    subtitle    text    page   outid
主要换《 text》相关匹配的文字

woniu 大佬有话说 : 2019-12-28 20:42:58

本帖最后由 woniu 于 2019-12-28 20:47 编辑

imsun 大佬有话说 : 2019-12-28 20:24
执行不起来。

我的表结构是

老铁 你这样写肯定不行 我不是说了必须一行一行的更新

你表里的id是主键吗,不是的话自己改改

                  create procedure p3()
                  begin
                        declare ssid int; — 必须是主键
                        DECLARE done INT DEFAULT FALSE;

                        DECLARE my_cursor CURSOR FOR select id from ak_texts;
                        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
                        
                        open my_cursor;
                            xxoo: LOOP
                              fetch my_cursor into ssid;
                              if done then
                                    leave xxoo;
                              END IF;
                              UPDATE ak_texts SET text=REPLACE(text,’文字’,ROUND((rand() * 500)))where id = ssid;
                               COMMIT;
                            end loop xxoo;
                        close my_cursor;
                  end

imsun 大佬有话说 : 2019-12-28 20:56:49

woniu 大佬有话说 : 2019-12-28 20:42
老铁 你这样写肯定不行 我不是说了必须一行一行的更新

你表里的id是主键吗,不是的话自己改改

id 是主键,运行错误了。

SQL 查询:

                  create procedure p3()
                  begin
                        declare ssid int;
MySQL 返回: 文档

#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 3

woniu 大佬有话说 : 2019-12-28 20:58:24

本帖最后由 woniu 于 2019-12-28 20:59 编辑

imsun 大佬有话说 : 2019-12-28 20:56
id 是主键,运行错误了。

SQL 查询:

自己百度一下吧 只能给你提供思路

我也没写过mysql的,写过oralce的,只是道理是相同的

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具