创建一个函数替换空白包车,你不是在串需要,
CREATE FUNCTION replace_char(v_string VARCHAR(32) CHARSET utf8) RETURNS VARCHAR(32)
DETERMINISTIC
BEGIN
DECLARE v_return_string VARCHAR(32) DEFAULT '';
DECLARE v_remove_char VARCHAR(200) DEFAULT '1,2,3,4,5,6,7,8,9,0';
DECLARE v_length, j INT(3) DEFAULT 0;
SET v_length = LENGTH(v_string);
WHILE(j < v_length) DO
IF (FIND_IN_SET(SUBSTR(v_string, (j+1), 1), v_remove_char) = 0) THEN
SET v_return_string = CONCAT(v_return_string, SUBSTR(v_string, (j+1), 1));
END IF;
SET j = j+1;
END WHILE;
RETURN v_return_string;
END$$
DELIMITER ;
现在你只要东东调用这个函数在查询
select uid, replace_char(uid) from test_table;
它会给你字符串你需要(bfaebfbbffde
)
如果你只想int数,即13574238486817567941
那么改变变量的值和列数据类型在十进制(50,0)中,十进制可以存储大数,并且有小数点0,所以它将存储int值作为十进制。
v_remove_char = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
您无法将VarChar(32)值映射到int以保持唯一性。如果您将所有字母替换为ascii等效字符,您将获得至少32位数的数字,而最大整数为2,147,483,647。 – CodeFuller
Postgres有特殊[UUID类型。(https://www.postgresql.org/docs/current/static/datatype-uuid.html) – klin
您应该使用UUID类型,而不是。 –