MYSQL同表更新及查询非数字数据

1. 用正则的方式查询出非数字型的数据


SELECT * 
FROM ekp_1748155e2cc8aaff744c 
WHERE fd_weiXiuPeiJianJinE NOT REGEXP '^[0-9]*\\.?[0-9]+$';

2. 同表更新, 必须加多一层In


UPDATE ekp_1748155e2cc8aaff744c AS t1
JOIN (
    SELECT fd_id 
    FROM ekp_1748155e2cc8aaff744c 
    WHERE fd_weiXiuPeiJianJinE NOT REGEXP '^[0-9]*\\.?[0-9]+$'
) AS t2 ON t1.fd_id = t2.fd_id
SET t1.fd_weiXiuPeiJianJinE = '0';


或者 , 其它第一种方法性能更快, 第二种就比较易懂.


UPDATE ekp_1748155e2cc8aaff744c 
SET fd_weiXiuPeiJianJinE = '0' 
WHERE fd_id IN (
    SELECT fd_id FROM (
        SELECT fd_id 
        FROM ekp_1748155e2cc8aaff744c 
        WHERE fd_weiXiuPeiJianJinE NOT REGEXP '^[0-9]*\\.?[0-9]+$'
    ) AS tmp
);


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论