Mysql:查询下表
我有下表:Mysql:查询下表,mysql,concatenation,user-defined-functions,string-concatenation,Mysql,Concatenation,User Defined Functions,String Concatenation,我有下表: |-------------------| |id |家庭电话| |-------------------| | 1 | 454454125 | | 2 | 47872154587 | | 3 | 128795423 | | 4 | 148784474 | |-------------------| 我的桌子上大约有40000行 我想将Homephone值格式化如下: 454-454-125 478-721-545-87 128-795-423 148-
|-------------------|
|id |家庭电话|
|-------------------|
| 1 | 454454125 |
| 2 | 47872154587 |
| 3 | 128795423 |
| 4 | 148784474 |
|-------------------|
我的桌子上大约有40000行
我想将Homephone
值格式化如下:
454-454-125
478-721-545-87
128-795-423
148-784-474
i、 e.在每3个我想要的数字之后-
(连字符)。如何使用MySQL实现这一点?您需要为这一点找到解决方案基本上,您需要创建自己的函数(所谓的-用户定义函数)并在表上运行它。
在MySQL参考手册的一章中发布了AndrewHanna的一个不错的函数。我修复了一个小错误(将
WHILE(IWHILE(I当前的mysql代码是什么?您尝试了什么?如果是一个网站,您是否碰巧使用了服务器端语言?(PHP、JSP、Python、Perl…)在PHP应用程序中我想要这个,但在phpmyadmin中我创建了一个没有连字符(-)的表对于homephone专栏,但我现在想更改。。。。。。。。。
DELIMITER //
CREATE FUNCTION insert_characters(str text, pos int, delimit varchar(124))
RETURNS text
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE str_len INT;
DECLARE out_str text default '';
SET str_len = length(str);
WHILE (i <= str_len) DO
SET out_str = CONCAT(out_str, SUBSTR(str, i, pos), delimit);
SET i = i + pos;
END WHILE;
-- trim delimiter from end of string
SET out_str = TRIM(trailing delimit from out_str);
RETURN(out_str);
END//
DELIMITER ;
SELECT insert_characters(Homephone, 3, "-") AS new_phone FROM my_table;
UPDATE my_table SET Homephone = insert_characters(Homephone, 3, "-");